From 194cdd06bc16957aca5a2f5b907312cb9b422b20 Mon Sep 17 00:00:00 2001 From: ForteScarlet Date: Tue, 26 Dec 2023 09:35:01 +0000 Subject: [PATCH] deploy: b3774d3176abef5ad6a6b32b16bac8c1ebc9bf03 --- 404.html | 4 ++-- assets/js/{11dc3ed0.f120a59a.js => 11dc3ed0.bde68ec7.js} | 2 +- assets/js/{2144e83a.20e4a18d.js => 2144e83a.97fdfb66.js} | 2 +- assets/js/{2b95aaa0.94037bf4.js => 2b95aaa0.0bba184d.js} | 2 +- assets/js/{34fd8ba9.ba356f90.js => 34fd8ba9.403fbf4a.js} | 2 +- assets/js/{36eca64c.fe42a823.js => 36eca64c.3a381028.js} | 2 +- assets/js/{3d9c95a4.b31d7836.js => 3d9c95a4.9081fe18.js} | 2 +- assets/js/{463b5da4.62b55e5e.js => 463b5da4.9a6167a0.js} | 2 +- assets/js/{4ba18d9a.524dcfd6.js => 4ba18d9a.33d2f624.js} | 2 +- assets/js/{5535f311.2f310a0e.js => 5535f311.21429455.js} | 2 +- assets/js/{644ef8b6.6a220415.js => 644ef8b6.6a7a1607.js} | 2 +- assets/js/{68a39df5.62f956e7.js => 68a39df5.01a5d51e.js} | 2 +- assets/js/{888645c5.3162246e.js => 888645c5.791b9bda.js} | 2 +- assets/js/{ad14e531.0c6e039d.js => ad14e531.68823102.js} | 2 +- assets/js/{b7db9b3a.f98f41f7.js => b7db9b3a.b7a7edbc.js} | 2 +- assets/js/{d597c9d2.84412fac.js => d597c9d2.47643899.js} | 2 +- assets/js/{e139579d.425bfaf6.js => e139579d.08959626.js} | 2 +- assets/js/{f44f51f0.e7bd1bfa.js => f44f51f0.953df9b5.js} | 2 +- assets/js/runtime~main.0a2fb92d.js | 1 + assets/js/runtime~main.dbacac12.js | 1 - docs/3.0.0.0-alpha.7/bot-config/index.html | 6 +++--- docs/3.0.0.0-alpha.7/index.html | 6 +++--- docs/3.0.0.0-alpha.7/quick-start/api/index.html | 6 +++--- docs/3.0.0.0-alpha.7/quick-start/index.html | 6 +++--- docs/3.0.0.0-alpha.7/quick-start/simbot-core/index.html | 6 +++--- docs/3.0.0.0-alpha.7/quick-start/spring-boot/index.html | 6 +++--- docs/3.0.0.0-alpha.7/quick-start/stdlib/index.html | 6 +++--- docs/3.0.0.0-alpha.7/search-index.json | 2 +- docs/basic/message/index.html | 6 +++--- docs/basic/role/index.html | 6 +++--- docs/basic/unknown-event/index.html | 6 +++--- docs/bot-config/index.html | 6 +++--- docs/index.html | 6 +++--- docs/quick-start/api/index.html | 6 +++--- docs/quick-start/index.html | 6 +++--- docs/quick-start/simbot-core/index.html | 6 +++--- docs/quick-start/spring-boot/index.html | 6 +++--- docs/quick-start/stdlib/index.html | 6 +++--- index.html | 4 ++-- search-index.json | 2 +- search/index.html | 4 ++-- 41 files changed, 77 insertions(+), 77 deletions(-) rename assets/js/{11dc3ed0.f120a59a.js => 11dc3ed0.bde68ec7.js} (98%) rename assets/js/{2144e83a.20e4a18d.js => 2144e83a.97fdfb66.js} (99%) rename assets/js/{2b95aaa0.94037bf4.js => 2b95aaa0.0bba184d.js} (99%) rename assets/js/{34fd8ba9.ba356f90.js => 34fd8ba9.403fbf4a.js} (99%) rename assets/js/{36eca64c.fe42a823.js => 36eca64c.3a381028.js} (99%) rename assets/js/{3d9c95a4.b31d7836.js => 3d9c95a4.9081fe18.js} (99%) rename assets/js/{463b5da4.62b55e5e.js => 463b5da4.9a6167a0.js} (98%) rename assets/js/{4ba18d9a.524dcfd6.js => 4ba18d9a.33d2f624.js} (98%) rename assets/js/{5535f311.2f310a0e.js => 5535f311.21429455.js} (99%) rename assets/js/{644ef8b6.6a220415.js => 644ef8b6.6a7a1607.js} (99%) rename assets/js/{68a39df5.62f956e7.js => 68a39df5.01a5d51e.js} (99%) rename assets/js/{888645c5.3162246e.js => 888645c5.791b9bda.js} (98%) rename assets/js/{ad14e531.0c6e039d.js => ad14e531.68823102.js} (99%) rename assets/js/{b7db9b3a.f98f41f7.js => b7db9b3a.b7a7edbc.js} (98%) rename assets/js/{d597c9d2.84412fac.js => d597c9d2.47643899.js} (99%) rename assets/js/{e139579d.425bfaf6.js => e139579d.08959626.js} (98%) rename assets/js/{f44f51f0.e7bd1bfa.js => f44f51f0.953df9b5.js} (98%) create mode 100644 assets/js/runtime~main.0a2fb92d.js delete mode 100644 assets/js/runtime~main.dbacac12.js diff --git a/404.html b/404.html index 367088c9..d30e3471 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ 找不到页面 | Simple Robot KOOK组件 - +
跳到主要内容

找不到页面

我们找不到您要找的页面。

请联系原始链接来源网站的所有者,并告知他们链接已损坏。

- + \ No newline at end of file diff --git a/assets/js/11dc3ed0.f120a59a.js b/assets/js/11dc3ed0.bde68ec7.js similarity index 98% rename from assets/js/11dc3ed0.f120a59a.js rename to assets/js/11dc3ed0.bde68ec7.js index 938d95bf..5f89dab2 100644 --- a/assets/js/11dc3ed0.f120a59a.js +++ b/assets/js/11dc3ed0.bde68ec7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[994],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,c=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=s(r),d=i,f=m["".concat(l,".").concat(d)]||m[d]||p[d]||c;return r?n.createElement(f,a(a({ref:t},u),{},{components:r})):n.createElement(f,a({ref:t},u))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var c=r.length,a=new Array(c);a[0]=d;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[m]="string"==typeof e?e:i,a[1]=o;for(var s=2;s{r.d(t,{Z:()=>b});var n=r(7294),i=r(6010),c=r(3438),a=r(9960),o=r(3919),l=r(5999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:r}=e;return n.createElement(a.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function m(e){let{href:t,icon:r,title:c,description:a}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:c},r," ",c),a&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:a},a))}function p(e){let{item:t}=e;const r=(0,c.Wl)(t);return r?n.createElement(m,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function d(e){let{item:t}=e;const r=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",i=(0,c.xz)(t.docId??void 0);return n.createElement(m,{href:t.href,icon:r,title:t.label,description:t.description??i?.description})}function f(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(d,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,c.jA)();return n.createElement(b,{items:r.items,className:t})}function b(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const a=(0,c.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},a.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e})))))}},253:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>m});var n=r(7462),i=(r(7294),r(3905)),c=r(2991),a=r(3438);const o={title:"\u5feb\u901f\u5f00\u59cb"},l=void 0,s={unversionedId:"quick-start/index",id:"quick-start/index",title:"\u5feb\u901f\u5f00\u59cb",description:"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528KOOK\u7ec4\u4ef6\u7684\u7b80\u5355\u793a\u4f8b\u3002",source:"@site/docs/quick-start/index.md",sourceDirName:"quick-start",slug:"/quick-start/",permalink:"/docs/quick-start/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/index.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"\u5feb\u901f\u5f00\u59cb"},sidebar:"tutorialSidebar",previous:{title:"\u9996\u9875",permalink:"/docs/"},next:{title:"\u4f7f\u7528API",permalink:"/docs/quick-start/api"}},u={},m=[{value:"\u6587\u6863\u5217\u8868",id:"\u6587\u6863\u5217\u8868",level:2}],p={toc:m},d="wrapper";function f(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528",(0,i.kt)("strong",{parentName:"p"},"KOOK\u7ec4\u4ef6"),"\u7684\u7b80\u5355\u793a\u4f8b\u3002"),(0,i.kt)("h2",{id:"\u6587\u6863\u5217\u8868"},"\u6587\u6863\u5217\u8868"),(0,i.kt)(c.Z,{items:(0,a.jA)().items,mdxType:"DocCardList"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[994],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,c=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=s(r),d=i,f=m["".concat(l,".").concat(d)]||m[d]||p[d]||c;return r?n.createElement(f,a(a({ref:t},u),{},{components:r})):n.createElement(f,a({ref:t},u))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var c=r.length,a=new Array(c);a[0]=d;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[m]="string"==typeof e?e:i,a[1]=o;for(var s=2;s{r.d(t,{Z:()=>b});var n=r(7294),i=r(6010),c=r(3438),a=r(9960),o=r(3919),l=r(5999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:r}=e;return n.createElement(a.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function m(e){let{href:t,icon:r,title:c,description:a}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:c},r," ",c),a&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:a},a))}function p(e){let{item:t}=e;const r=(0,c.Wl)(t);return r?n.createElement(m,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function d(e){let{item:t}=e;const r=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",i=(0,c.xz)(t.docId??void 0);return n.createElement(m,{href:t.href,icon:r,title:t.label,description:t.description??i?.description})}function f(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(d,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,c.jA)();return n.createElement(b,{items:r.items,className:t})}function b(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const a=(0,c.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},a.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e})))))}},253:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>m});var n=r(7462),i=(r(7294),r(3905)),c=r(2991),a=r(3438);const o={title:"\u5feb\u901f\u5f00\u59cb"},l=void 0,s={unversionedId:"quick-start/index",id:"quick-start/index",title:"\u5feb\u901f\u5f00\u59cb",description:"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528KOOK\u7ec4\u4ef6\u7684\u7b80\u5355\u793a\u4f8b\u3002",source:"@site/docs/quick-start/index.md",sourceDirName:"quick-start",slug:"/quick-start/",permalink:"/docs/quick-start/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/index.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"\u5feb\u901f\u5f00\u59cb"},sidebar:"tutorialSidebar",previous:{title:"\u9996\u9875",permalink:"/docs/"},next:{title:"\u4f7f\u7528API",permalink:"/docs/quick-start/api"}},u={},m=[{value:"\u6587\u6863\u5217\u8868",id:"\u6587\u6863\u5217\u8868",level:2}],p={toc:m},d="wrapper";function f(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528",(0,i.kt)("strong",{parentName:"p"},"KOOK\u7ec4\u4ef6"),"\u7684\u7b80\u5355\u793a\u4f8b\u3002"),(0,i.kt)("h2",{id:"\u6587\u6863\u5217\u8868"},"\u6587\u6863\u5217\u8868"),(0,i.kt)(c.Z,{items:(0,a.jA)().items,mdxType:"DocCardList"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2144e83a.20e4a18d.js b/assets/js/2144e83a.97fdfb66.js similarity index 99% rename from assets/js/2144e83a.20e4a18d.js rename to assets/js/2144e83a.97fdfb66.js index 357024c7..a5165f45 100644 --- a/assets/js/2144e83a.20e4a18d.js +++ b/assets/js/2144e83a.97fdfb66.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[949],{5162:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),r=a(6010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>x});var n=a(7462),r=a(7294),o=a(6010),i=a(2466),l=a(6550),s=a(1980),u=a(7392),p=a(12);function c(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function d(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??c(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,l.k6)(),o=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,o=d(e),[i,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[s,u]=k({queryString:a,groupId:n}),[c,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,p.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&o.set(e)}),[a,o])]}({groupId:n}),v=(()=>{const e=s??c;return m({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,o]),tabValues:o}}var v=a(2389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:a,selectedValue:l,selectValue:s,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),d=e=>{const t=e.currentTarget,a=p.indexOf(t),n=u[a].value;n!==l&&(c(t),s(n))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const a=p.indexOf(e.currentTarget)+1;t=p[a]??p[0];break}case"ArrowLeft":{const a=p.indexOf(e.currentTarget)-1;t=p[a]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:i}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>p.push(e),onKeyDown:m,onClick:d},i,{className:(0,o.Z)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":l===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const o=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function I(e){const t=b(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",f.tabList)},r.createElement(h,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function x(e){const t=(0,v.Z)();return r.createElement(I,(0,n.Z)({key:String(t)},e))}},8630:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>p,default:()=>v,frontMatter:()=>u,metadata:()=>c,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),o=a(4866),i=a(5162),l=a(614),s=a(2965);const u={title:"\u4f7f\u7528API",sidebar_position:1},p=void 0,c={unversionedId:"quick-start/api",id:"version-3.0.0.0-alpha.7/quick-start/api",title:"\u4f7f\u7528API",description:"API\u6a21\u5757\u662f\u72ec\u7acb\u7684\uff0c\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a KOOK API \u7684\u5c01\u88c5\u5e93\u3002",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/api.md",sourceDirName:"quick-start",slug:"/quick-start/api",permalink:"/docs/3.0.0.0-alpha.7/quick-start/api",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/api.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:1,frontMatter:{title:"\u4f7f\u7528API",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/3.0.0.0-alpha.7/quick-start/"},next:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/stdlib"}},d={},m=[{value:"\u5b89\u88c5",id:"\u5b89\u88c5",level:2},{value:"\u4f7f\u7528",id:"\u4f7f\u7528",level:2},{value:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",level:3}],k={toc:m},b="wrapper";function v(e){let{components:t,...a}=e;return(0,r.kt)(b,(0,n.Z)({},k,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"API\u6a21\u5757\u662f\u72ec\u7acb\u7684\uff0c\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/"},"KOOK API")," \u7684\u5c01\u88c5\u5e93\u3002"),(0,r.kt)("admonition",{title:"\u5168\u53d8\u4e86",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"API\u6a21\u5757\u5728 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simbot-component-kook/issues/82"},(0,r.kt)("strong",{parentName:"a"},"#82"))," \u7684\u8fc7\u7a0b\u4e2d\u4f1a",(0,r.kt)("strong",{parentName:"p"},"\u5927\u6539"),"\uff0c\n\u5305\u62ec\u53d8\u66f4API\u63a5\u53e3\u7684\u7ed3\u679c\u5b9e\u73b0\u3001\u4e8b\u4ef6\u7c7b\u578b\u7684\u5b9e\u73b0\u7b49\uff0c\u4ee5\u53ca\u53d8\u66f4\u6240\u6709API\u7684\u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"GetXxxListApi")," \u98ce\u683c\u7b49\u3002")),(0,r.kt)("h2",{id:"\u5b89\u88c5"},"\u5b89\u88c5"),(0,r.kt)(o.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"Gradle Kotlin DSL",mdxType:"TabItem"},(0,r.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\n// \u4e0d\u8981\u5fd8\u8bb0\u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nimplementation("love.forte.simbot.component:simbot-component-kook-api:${s.i}") // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(i.Z,{value:"Gradle Groovy",mdxType:"TabItem"},(0,r.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\n// \u4e0d\u8981\u5fd8\u8bb0\u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nimplementation 'love.forte.simbot.component:simbot-component-kook-api:${s.i}' // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(i.Z,{value:"Maven",mdxType:"TabItem"},(0,r.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\n love.forte.simbot.component\n \x3c!-- \u5728Maven\u4e2d\u4f7f\u7528 '-jvm' \u540e\u7f00\u6765\u9009\u62e9\u4f7f\u7528JVM\u5e73\u53f0\u5e93 --\x3e\n simbot-component-kook-api\n \x3c!-- \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases --\x3e\n ${s.i}\n\n`.trim()))),(0,r.kt)("admonition",{title:"\u7248\u672c\u53c2\u8003",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"\u7248\u672c\u53ef\u524d\u5f80 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,r.kt)("strong",{parentName:"a"},"Releases"))," \u67e5\u770b\u5e76\u9009\u62e9\u3002")),(0,r.kt)("h2",{id:"\u4f7f\u7528"},"\u4f7f\u7528"),(0,r.kt)("admonition",{title:"\u592a\u591a\u4e86",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4e0d\u4f1a\u5728\u6b64\u5904\u4e00\u4e00\u5217\u4e3e\u6240\u6709\u7684API\u505a\u6f14\u793a\uff0c\u8fd9\u4e0d\u592a\u73b0\u5b9e\u3002\n\u6240\u6709\u7684API\u90fd\u5728\u5305\u8def\u5f84 ",(0,r.kt)("inlineCode",{parentName:"p"},"love.forte.simbot.kook.api")," \u4e0b\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love/"},"API\u6587\u6863")," \u6216\u67e5\u9605\u6e90\u7801\u7684\u65b9\u5f0f\u6765\u5bfb\u627e\u4f60\u6240\u9700\u8981\u7684API\u3002"),(0,r.kt)("p",{parentName:"admonition"},"API\u5305\u88c5\u7c7b\u7684\u547d\u540d\u4e5f\u5b58\u5728\u4e00\u5b9a\u7684\u89c4\u5f8b\uff0c\u6bd4\u5982\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u83b7\u53d6\u67d0\u5217\u8868")," \u7684API\u901a\u5e38\u4f1a\u88ab\u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"XxxListRequest"),"\u3002"),(0,r.kt)("p",{parentName:"admonition"},"\u4e0b\u6587\u4f1a\u9009\u62e9\u4e00\u5c0f\u90e8\u5206API\u6765\u505a\u793a\u4f8b\u3002")),(0,r.kt)("h3",{id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"},"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"),(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/guild#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%8A%A0%E5%85%A5%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%97%E8%A1%A8"},"\u83b7\u53d6\u5f53\u524d\u7528\u6237(BOT)\u52a0\u5165\u7684\u670d\u52a1\u5668\u5217\u8868")," \u4e3a\u4f8b\u3002"),(0,r.kt)(o.Z,{groupId:"code",mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"Kotlin",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},"// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(Java) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// 'Bot' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = \"Bot xxxxxxxxxx\"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GuildListRequest.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { ... }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n"))),(0,r.kt)(i.Z,{value:"Java",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-java \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(Java.INSTANCE, config -> {\n // config... \n return Unit.INSTANCE;\n});\n\n// \u9274\u6743\u4fe1\u606f\n// 'Bot' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = \"Bot xxxxxxxxxx\";\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nvar api = GuildListRequest.create();\n\n// requestDataBlocking \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nvar guildListData = api.requestDataBlocking(client, authorization);\n\nfor (var guild : guildListData) {\n System.out.println(guild);\n}\n")))))}v.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[949],{5162:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),r=a(6010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>x});var n=a(7462),r=a(7294),o=a(6010),i=a(2466),l=a(6550),s=a(1980),u=a(7392),p=a(12);function c(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function d(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??c(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,l.k6)(),o=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,o=d(e),[i,l]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[s,u]=k({queryString:a,groupId:n}),[c,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,p.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&o.set(e)}),[a,o])]}({groupId:n}),v=(()=>{const e=s??c;return m({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,o]),tabValues:o}}var v=a(2389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:a,selectedValue:l,selectValue:s,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),d=e=>{const t=e.currentTarget,a=p.indexOf(t),n=u[a].value;n!==l&&(c(t),s(n))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const a=p.indexOf(e.currentTarget)+1;t=p[a]??p[0];break}case"ArrowLeft":{const a=p.indexOf(e.currentTarget)-1;t=p[a]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:i}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>p.push(e),onKeyDown:m,onClick:d},i,{className:(0,o.Z)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":l===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const o=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function I(e){const t=b(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",f.tabList)},r.createElement(h,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function x(e){const t=(0,v.Z)();return r.createElement(I,(0,n.Z)({key:String(t)},e))}},8630:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>p,default:()=>v,frontMatter:()=>u,metadata:()=>c,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),o=a(4866),i=a(5162),l=a(614),s=a(2965);const u={title:"\u4f7f\u7528API",sidebar_position:1},p=void 0,c={unversionedId:"quick-start/api",id:"version-3.0.0.0-alpha.7/quick-start/api",title:"\u4f7f\u7528API",description:"API\u6a21\u5757\u662f\u72ec\u7acb\u7684\uff0c\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a KOOK API \u7684\u5c01\u88c5\u5e93\u3002",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/api.md",sourceDirName:"quick-start",slug:"/quick-start/api",permalink:"/docs/3.0.0.0-alpha.7/quick-start/api",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/api.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:1,frontMatter:{title:"\u4f7f\u7528API",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/3.0.0.0-alpha.7/quick-start/"},next:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/stdlib"}},d={},m=[{value:"\u5b89\u88c5",id:"\u5b89\u88c5",level:2},{value:"\u4f7f\u7528",id:"\u4f7f\u7528",level:2},{value:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",level:3}],k={toc:m},b="wrapper";function v(e){let{components:t,...a}=e;return(0,r.kt)(b,(0,n.Z)({},k,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"API\u6a21\u5757\u662f\u72ec\u7acb\u7684\uff0c\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/"},"KOOK API")," \u7684\u5c01\u88c5\u5e93\u3002"),(0,r.kt)("admonition",{title:"\u5168\u53d8\u4e86",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"API\u6a21\u5757\u5728 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simbot-component-kook/issues/82"},(0,r.kt)("strong",{parentName:"a"},"#82"))," \u7684\u8fc7\u7a0b\u4e2d\u4f1a",(0,r.kt)("strong",{parentName:"p"},"\u5927\u6539"),"\uff0c\n\u5305\u62ec\u53d8\u66f4API\u63a5\u53e3\u7684\u7ed3\u679c\u5b9e\u73b0\u3001\u4e8b\u4ef6\u7c7b\u578b\u7684\u5b9e\u73b0\u7b49\uff0c\u4ee5\u53ca\u53d8\u66f4\u6240\u6709API\u7684\u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"GetXxxListApi")," \u98ce\u683c\u7b49\u3002")),(0,r.kt)("h2",{id:"\u5b89\u88c5"},"\u5b89\u88c5"),(0,r.kt)(o.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"Gradle Kotlin DSL",mdxType:"TabItem"},(0,r.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\n// \u4e0d\u8981\u5fd8\u8bb0\u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nimplementation("love.forte.simbot.component:simbot-component-kook-api:${s.i}") // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(i.Z,{value:"Gradle Groovy",mdxType:"TabItem"},(0,r.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\n// \u4e0d\u8981\u5fd8\u8bb0\u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nimplementation 'love.forte.simbot.component:simbot-component-kook-api:${s.i}' // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(i.Z,{value:"Maven",mdxType:"TabItem"},(0,r.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\n love.forte.simbot.component\n \x3c!-- \u5728Maven\u4e2d\u4f7f\u7528 '-jvm' \u540e\u7f00\u6765\u9009\u62e9\u4f7f\u7528JVM\u5e73\u53f0\u5e93 --\x3e\n simbot-component-kook-api\n \x3c!-- \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases --\x3e\n ${s.i}\n\n`.trim()))),(0,r.kt)("admonition",{title:"\u7248\u672c\u53c2\u8003",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"\u7248\u672c\u53ef\u524d\u5f80 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,r.kt)("strong",{parentName:"a"},"Releases"))," \u67e5\u770b\u5e76\u9009\u62e9\u3002")),(0,r.kt)("h2",{id:"\u4f7f\u7528"},"\u4f7f\u7528"),(0,r.kt)("admonition",{title:"\u592a\u591a\u4e86",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4e0d\u4f1a\u5728\u6b64\u5904\u4e00\u4e00\u5217\u4e3e\u6240\u6709\u7684API\u505a\u6f14\u793a\uff0c\u8fd9\u4e0d\u592a\u73b0\u5b9e\u3002\n\u6240\u6709\u7684API\u90fd\u5728\u5305\u8def\u5f84 ",(0,r.kt)("inlineCode",{parentName:"p"},"love.forte.simbot.kook.api")," \u4e0b\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love/"},"API\u6587\u6863")," \u6216\u67e5\u9605\u6e90\u7801\u7684\u65b9\u5f0f\u6765\u5bfb\u627e\u4f60\u6240\u9700\u8981\u7684API\u3002"),(0,r.kt)("p",{parentName:"admonition"},"API\u5305\u88c5\u7c7b\u7684\u547d\u540d\u4e5f\u5b58\u5728\u4e00\u5b9a\u7684\u89c4\u5f8b\uff0c\u6bd4\u5982\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u83b7\u53d6\u67d0\u5217\u8868")," \u7684API\u901a\u5e38\u4f1a\u88ab\u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"XxxListRequest"),"\u3002"),(0,r.kt)("p",{parentName:"admonition"},"\u4e0b\u6587\u4f1a\u9009\u62e9\u4e00\u5c0f\u90e8\u5206API\u6765\u505a\u793a\u4f8b\u3002")),(0,r.kt)("h3",{id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"},"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"),(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/guild#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%8A%A0%E5%85%A5%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%97%E8%A1%A8"},"\u83b7\u53d6\u5f53\u524d\u7528\u6237(BOT)\u52a0\u5165\u7684\u670d\u52a1\u5668\u5217\u8868")," \u4e3a\u4f8b\u3002"),(0,r.kt)(o.Z,{groupId:"code",mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"Kotlin",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},"// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(Java) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// 'Bot' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = \"Bot xxxxxxxxxx\"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GuildListRequest.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { ... }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n"))),(0,r.kt)(i.Z,{value:"Java",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-java \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(Java.INSTANCE, config -> {\n // config... \n return Unit.INSTANCE;\n});\n\n// \u9274\u6743\u4fe1\u606f\n// 'Bot' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = \"Bot xxxxxxxxxx\";\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nvar api = GuildListRequest.create();\n\n// requestDataBlocking \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nvar guildListData = api.requestDataBlocking(client, authorization);\n\nfor (var guild : guildListData) {\n System.out.println(guild);\n}\n")))))}v.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file diff --git a/assets/js/2b95aaa0.94037bf4.js b/assets/js/2b95aaa0.0bba184d.js similarity index 99% rename from assets/js/2b95aaa0.94037bf4.js rename to assets/js/2b95aaa0.0bba184d.js index 4ec60ac1..875f077e 100644 --- a/assets/js/2b95aaa0.94037bf4.js +++ b/assets/js/2b95aaa0.0bba184d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[775],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=i.createContext({}),c=function(e){var t=i.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,l=e.originalType,p=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),s=c(n),m=o,k=s["".concat(p,".").concat(m)]||s[m]||u[m]||l;return n?i.createElement(k,a(a({ref:t},d),{},{components:n})):i.createElement(k,a({ref:t},d))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=n.length,a=new Array(l);a[0]=m;var r={};for(var p in t)hasOwnProperty.call(t,p)&&(r[p]=t[p]);r.originalType=e,r[s]="string"==typeof e?e:o,a[1]=r;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});var i=n(7462),o=(n(7294),n(3905));const l={title:"BOT\u914d\u7f6e\u6587\u4ef6"},a=void 0,r={unversionedId:"bot-config/index",id:"bot-config/index",title:"BOT\u914d\u7f6e\u6587\u4ef6",description:"\u672c\u7ae0\u8282\u4f1a\u63d0\u4f9b bot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u5404\u5c5e\u6027\u7684\u542b\u4e49\u4ee5\u53ca\u793a\u4f8b\u3002",source:"@site/docs/bot-config/index.md",sourceDirName:"bot-config",slug:"/bot-config/",permalink:"/docs/bot-config/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/bot-config/index.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"BOT\u914d\u7f6e\u6587\u4ef6"},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/quick-start/spring-boot"},next:{title:"\u6d88\u606f",permalink:"/docs/basic/message"}},p={},c=[{value:"\u793a\u4f8b",id:"\u793a\u4f8b",level:2},{value:"\u5c5e\u6027\u63cf\u8ff0",id:"\u5c5e\u6027\u63cf\u8ff0",level:2},{value:"component",id:"component",level:3},{value:"ticket",id:"ticket",level:3},{value:"ticket.clientId",id:"ticketclientid",level:4},{value:"ticket.token",id:"tickettoken",level:4},{value:"config",id:"config",level:3},{value:"config.isCompress",id:"configiscompress",level:4},{value:"config.syncPeriods",id:"configsyncperiods",level:4},{value:"syncPeriods.guild",id:"syncperiodsguild",level:5},{value:"syncPeriods.guild.syncPeriod",id:"syncperiodsguildsyncperiod",level:5},{value:"syncPeriods.guild.batchDelay",id:"syncperiodsguildbatchdelay",level:5},{value:"config.clientEngineConfig & config.wsEngineConfig",id:"configclientengineconfig--configwsengineconfig",level:4},{value:"threadsCount",id:"threadscount",level:5},{value:"pipelining",id:"pipelining",level:5},{value:"config.timeout",id:"configtimeout",level:4},{value:"connectTimeoutMillis",id:"connecttimeoutmillis",level:5},{value:"requestTimeoutMillis",id:"requesttimeoutmillis",level:5},{value:"socketTimeoutMillis",id:"sockettimeoutmillis",level:5},{value:"config.wsConnectTimeout",id:"configwsconnecttimeout",level:4},{value:"config.isNormalEventProcessAsync",id:"configisnormaleventprocessasync",level:4}],d={toc:c},s="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"\u672c\u7ae0\u8282\u4f1a\u63d0\u4f9b bot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u5404\u5c5e\u6027\u7684\u542b\u4e49\u4ee5\u53ca\u793a\u4f8b\u3002"),(0,o.kt)("admonition",{title:"\u573a\u666f",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"bot \u7684\u914d\u7f6e\u6587\u4ef6\u901a\u5e38\u5e94\u7528\u4e8e\u591a\u7ec4\u4ef6\u5e94\u7528\u6216 Spring Boot \u9879\u76ee\u4e2d\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5bf9\u4e8e\u4f7f\u7528Kotlin\u3001\u4e0d\u4f7f\u7528SpringBoot\u7684\u5f00\u53d1\u8005\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u76f4\u63a5\u4f7f\u7528\u4ee3\u7801\u7684\u5f62\u5f0f\u8fdb\u884c\u914d\u7f6e\u3002")),(0,o.kt)("h2",{id:"\u793a\u4f8b"},"\u793a\u4f8b"),(0,o.kt)("p",null,"\u5b8c\u6574\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"title='xxx.bot.json'",title:"'xxx.bot.json'"},'{\n "component": "simbot.kook",\n "ticket": {\n "clientId": "Your client ID",\n "token": "Your ws token"\n },\n "config": {\n "isCompress": true,\n "syncPeriods": {\n "guild": {\n "syncPeriod": 180000,\n "batchDelay": 0\n },\n "clientEngineConfig": {\n "threadsCount": null,\n "pipelining": null\n },\n "wsEngineConfig": {\n "threadsCount": null,\n "pipelining": null\n },\n "timeout": {\n "connectTimeoutMillis": 5000,\n "requestTimeoutMillis": 5000,\n "socketTimeoutMillis": null\n },\n "wsConnectTimeout": null,\n "isNormalEventProcessAsync": null\n }\n }\n}\n')),(0,o.kt)("p",null,"\u6700\u7b80\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"title='xxx.bot.json'",title:"'xxx.bot.json'"},'{\n "component": "simbot.kook",\n "ticket": {\n "clientId": "Your client ID",\n "token": "Your ws token"\n }\n}\n')),(0,o.kt)("h2",{id:"\u5c5e\u6027\u63cf\u8ff0"},"\u5c5e\u6027\u63cf\u8ff0"),(0,o.kt)("h3",{id:"component"},(0,o.kt)("inlineCode",{parentName:"h3"},"component")),(0,o.kt)("p",null,"\u56fa\u5b9a\u503c ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot.kook"),"\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u5fc5\u586b"),"\uff0c\u4ee3\u8868\u6b64\u914d\u7f6e\u6587\u4ef6\u4e3aKOOK\u7ec4\u4ef6\u7684\u3002"),(0,o.kt)("h3",{id:"ticket"},(0,o.kt)("inlineCode",{parentName:"h3"},"ticket")),(0,o.kt)("p",null,"\u5bf9 bot \u8eab\u4efd\u8fdb\u884c\u6821\u9a8c\u3001\u8bbf\u95ee KOOK API \u4ee5\u53ca\u8fde\u63a5KOOK\u670d\u52a1\u5668\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605\u65f6\u6240\u9700\u7684 bot \u7968\u636e\u4fe1\u606f\u3002"),(0,o.kt)("admonition",{title:"\u5728\u54ea\u513f?",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u53ef\u4ee5\u5728 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u5f00\u53d1\u8005\u5e73\u53f0-\u5e94\u7528")," \u4e2d\u67e5\u770b\u3002")),(0,o.kt)("h4",{id:"ticketclientid"},(0,o.kt)("inlineCode",{parentName:"h4"},"ticket.clientId")),(0,o.kt)("p",null,"BOT\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Client ID"),"\u3002"),(0,o.kt)("h4",{id:"tickettoken"},(0,o.kt)("inlineCode",{parentName:"h4"},"ticket.token")),(0,o.kt)("p",null,"BOT\u4f7f\u7528 ",(0,o.kt)("strong",{parentName:"p"},"websocket")," \u6a21\u5f0f\u8fdb\u884c\u8fde\u63a5\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"token")," ."),(0,o.kt)("h3",{id:"config"},(0,o.kt)("inlineCode",{parentName:"h3"},"config")),(0,o.kt)("p",null,"\u5176\u4ed6\u914d\u7f6e\uff0c\u53ef\u9009\u3002"),(0,o.kt)("h4",{id:"configiscompress"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.isCompress")),(0,o.kt)("p",null,"\u662f\u5426\u538b\u7f29\u6570\u636e\u3002\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"true"),"\u3002"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/gateway"},"Gateway API")," \u4e2d\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"compress")," \u53c2\u6570\u3002")),(0,o.kt)("h4",{id:"configsyncperiods"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.syncPeriods")),(0,o.kt)("p",null,"\u7f13\u5b58\u5bf9\u8c61\u4fe1\u606f\u7684\u540c\u6b65\u5468\u671f\u914d\u7f6e\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "syncPeriods": {\n "guild": {\n "syncPeriod": 180000,\n "batchDelay": 0\n }\n }\n }\n}\n')),(0,o.kt)("details",null,(0,o.kt)("summary",null,"\u8bd5\u7740\u5173\u95ed\u5b83\uff01"),(0,o.kt)("p",null,"\u4ece ",(0,o.kt)("inlineCode",{parentName:"p"},"v3.2.0.0-alpha.8")," \u91cd\u6784\u4e4b\u540e\uff0c\u6570\u636e\u7684\u540c\u6b65\u673a\u5236\u6bd4\u4e4b\u524d\u7684\u7248\u672c\u800c\u8a00\u66f4\u52a0\u7a33\u5b9a\u3002\n\u5982\u679c\u4f60\u6709\u5174\u8da3\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u76f4\u63a5",(0,o.kt)("strong",{parentName:"p"},"\u7981\u7528\u5b9a\u65f6\u540c\u6b65"),"\u6765\u89c2\u5bdf\u6570\u636e\u662f\u5426\u4f1a\u51fa\u73b0\u5dee\u9519\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "syncPeriods": {\n "guild": {\n "syncPeriod": 0,\n "batchDelay": 0\n }\n }\n }\n}\n')),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"\u5c06 ",(0,o.kt)("inlineCode",{parentName:"em"},"syncPeriod")," \u8bbe\u7f6e\u4e3a ",(0,o.kt)("inlineCode",{parentName:"em"},"0")," \u5373\u53ef\u5173\u95ed"))),(0,o.kt)("p",null,"\u5728\u9884\u671f\u4e2d\uff0c\u4ec5\u901a\u8fc7\u4e8b\u4ef6\u7684\u901a\u77e5\u5c31\u5e94\u6ee1\u8db3\u5bf9\u5185\u90e8\u7f13\u5b58\u7684\u540c\u6b65\u66f4\u65b0\u3002\u56e0\u6b64\u6211\u4eec\u5e0c\u671b\u53ef\u4ee5\u5728\u5b8c\u5168\u7981\u7528\u5b9a\u65f6\u540c\u6b65\u7684\u60c5\u51b5\u4e0b\u4f9d\u65e7\u53ef\u4ee5\u4fdd\u8bc1\u7f13\u5b58\u6570\u636e\u7684\u51c6\u786e\u6027\u3002\n\u4f46\u662f\u76ee\u524d\u6d4b\u8bd5\u6216\u53cd\u9988\u7684\u6570\u636e\u4ecd\u7136\u4e0d\u8db3\uff0c\u6211\u4eec\u65e0\u6cd5\u5b8c\u5168\u9884\u5224\u7981\u7528\u5b9a\u65f6\u540c\u6b65\u53ef\u80fd\u9020\u6210\u7684\u540e\u679c\u6216\u5982\u679c\u56e0\u6b64\u800c\u4ea7\u751f\u7f13\u5b58\u6570\u636e\u4e0d\u51c6\u786e\u7684\u53ef\u80fd\u539f\u56e0\u3002"),(0,o.kt)("p",null,"\u56e0\u6b64\u6211\u4eec\u5e0c\u671b\u4f60\u5728\u53ef\u63a7\u8303\u56f4\u5185\u66f4\u591a\u7684\u5c1d\u8bd5",(0,o.kt)("strong",{parentName:"p"},"\u7981\u7528\u5b9a\u65f6\u540c\u6b65"),"\u5e76\u5728\u51fa\u73b0\u95ee\u9898\u65f6\u53ca\u65f6",(0,o.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot/issues/new/choose"},(0,o.kt)("strong",{parentName:"a"},"\u53cd\u9988")),"\uff0c\n\u8fd9\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u5b8c\u5584\u5185\u90e8\u7684\u7f13\u5b58\u673a\u5236\u3002"),(0,o.kt)("p",null,"\u611f\u8c22\u60a8\u7684\u652f\u6301\u4e0e\u8d21\u732e\uff01")),(0,o.kt)("h5",{id:"syncperiodsguild"},(0,o.kt)("inlineCode",{parentName:"h5"},"syncPeriods.guild")),(0,o.kt)("p",null,"\u5bf9\u9891\u9053\u670d\u52a1\u5668\u8fdb\u884c\u540c\u6b65\u7684\u5468\u671f\u4fe1\u606f\u914d\u7f6e\uff0c\u5355\u4f4d\u6beb\u79d2\u3002"),(0,o.kt)("h5",{id:"syncperiodsguildsyncperiod"},(0,o.kt)("inlineCode",{parentName:"h5"},"syncPeriods.guild.syncPeriod")),(0,o.kt)("p",null,"\u5bf9\u9891\u9053\u670d\u52a1\u5668\u8fdb\u884c\u540c\u6b65\u7684\u5468\u671f\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u5927\u4e8e",(0,o.kt)("inlineCode",{parentName:"p"},"0"),"\u65f6\u6709\u6548\u3002\u76ee\u524d\u670d\u52a1\u5668\u540c\u6b65\u7684\u540c\u65f6\u4f1a\u53bb\u540c\u6b65\u6b64\u670d\u52a1\u5668\u4e0b\u7684\u6240\u6709\u9891\u9053\u5217\u8868\u4e0e\u6210\u5458\u5217\u8868\u3002"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"180000"),"\uff0c\u5373 ",(0,o.kt)("inlineCode",{parentName:"p"},"180000\u6beb\u79d2 -> 180\u79d2 -> 3\u5206\u949f"),"\u3002"),(0,o.kt)("p",null,"\u8fdb\u884c\u914d\u7f6e\u7684\u65f6\u5019\u9700\u8981\u6ce8\u610f\u8003\u8651\u8c03\u7528\u9891\u7387\u4e0a\u9650\u7b49\u76f8\u5173\u95ee\u9898\u3002"),(0,o.kt)("h5",{id:"syncperiodsguildbatchdelay"},(0,o.kt)("inlineCode",{parentName:"h5"},"syncPeriods.guild.batchDelay")),(0,o.kt)("p",null,"\u540c\u6b65\u6570\u636e\u662f\u5206\u9875\u5206\u6279\u6b21\u7684\u540c\u6b65\u3002",(0,o.kt)("inlineCode",{parentName:"p"},"batchDelay")," \u914d\u7f6e\u6bcf\u6279\u6b21\u540e\u8fdb\u884c\u6302\u8d77\u7b49\u5f85\u7684\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\u3002\n\u53ef\u4ee5\u901a\u8fc7\u8c03\u5927\u6b64\u53c2\u6570\u6765\u51cf\u7f13 API \u7684\u8bf7\u6c42\u901f\u7387, \u9ed8\u8ba4\u4e0d\u7b49\u5f85\u3002"),(0,o.kt)("p",null,"\u914d\u7f6e\u6b64\u5c5e\u6027\u53ef\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u964d\u4f4e\u89e6\u53d1\u8c03\u7528\u9891\u7387\u9650\u5236\u7684\u98ce\u9669\u3002"),(0,o.kt)("br",null),(0,o.kt)("details",null,(0,o.kt)("summary",null,"\u9ed8\u8ba4\u503c\u7684\u7531\u6765?"),(0,o.kt)("p",null,"\u4e00\u62cd\u8111\u74dc\u513f\u968f\u4fbf\u5199\u7684\u3002")),(0,o.kt)("h4",{id:"configclientengineconfig--configwsengineconfig"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.clientEngineConfig")," & ",(0,o.kt)("inlineCode",{parentName:"h4"},"config.wsEngineConfig")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"clientEngineConfig")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"wsEngineConfig")," \u4e24\u4e2a\u914d\u7f6e\u9879\u7c7b\u578b\u76f8\u540c\uff0c\u987e\u540d\u601d\u4e49\u5b83\u4eec\u5206\u522b\u662f\u9488\u5bf9 ",(0,o.kt)("inlineCode",{parentName:"p"},"API client")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"ws")," \u573a\u666f\u4e0b\u4f7f\u7528\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u5b9e\u4f8b\u7684\u5f15\u64ce\uff08\u901a\u7528\uff09\u914d\u7f6e\u9879\u3002"),(0,o.kt)("p",null,"\u5b83\u4eec\u7684\u914d\u7f6e\u9879\u90fd\u4e0e Ktor \u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"HttpClientEngineConfig")," \u7684\u914d\u7f6e\u76f8\u540c\uff0c\u6ca1\u6709\u989d\u5916\u7684\u542b\u4e49\u3002"),(0,o.kt)("h5",{id:"threadscount"},(0,o.kt)("inlineCode",{parentName:"h5"},"threadsCount")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Specifies network threads count advice.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#configure"},"Ktor\u6587\u6863")),(0,o.kt)("h5",{id:"pipelining"},(0,o.kt)("inlineCode",{parentName:"h5"},"pipelining")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Enables HTTP pipelining advice.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#configure"},"Ktor\u6587\u6863")),(0,o.kt)("h4",{id:"configtimeout"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.timeout")),(0,o.kt)("p",null,"BOT\u5185\u8fdb\u884cAPI\u8bf7\u6c42\u65f6\u5019\u7684\u8d85\u65f6\u65f6\u95f4\u914d\u7f6e\u3002\uff08\u57fa\u4e8e ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html"},"Ktor HttpTimeout"),"\uff09"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u5f53 ",(0,o.kt)("inlineCode",{parentName:"p"},"timeout")," \u672c\u8eab\u4e3anull\u65f6\uff0c\u4e0d\u4f1a\u8986\u76d6\u539f\u672c\u7684\u9ed8\u8ba4\u914d\u7f6e\u3002\u4f46\u5982\u679c ",(0,o.kt)("inlineCode",{parentName:"p"},"timeout")," \u4e0d\u4e3anull\uff0c\u5219\u4f1a\u76f4\u63a5\u4f7f\u7528\u6b64\u5bf9\u8c61\u5185\u4fe1\u606f\u76f4\u63a5\u5b8c\u6574\u8986\u76d6\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u4f8b\u5982\uff1a"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "timeout": null\n }\n}\n')),(0,o.kt)("p",{parentName:"admonition"},"\u6b64\u65f6\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"connectTimeoutMillis")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"requestTimeoutMillis")," \u90fd\u662f\u9ed8\u8ba4\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"5000"),"\uff0c\n\u800c\u5982\u679c\u914d\u7f6e\u662f\uff1a"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "timeout": {\n \n }\n }\n}\n')),(0,o.kt)("p",{parentName:"admonition"},"\u5219\u6240\u6709\u5c5e\u6027\u90fd\u4f1a\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"null"),"\u3002")),(0,o.kt)("h5",{id:"connecttimeoutmillis"},(0,o.kt)("inlineCode",{parentName:"h5"},"connectTimeoutMillis")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"a time period required to process an HTTP call: from sending a request to receiving a response.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html#configure_plugin"},"Ktor HttpTimeout")),(0,o.kt)("h5",{id:"requesttimeoutmillis"},(0,o.kt)("inlineCode",{parentName:"h5"},"requestTimeoutMillis")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"a time period in which a client should establish a connection with a server.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html#configure_plugin"},"Ktor HttpTimeout")),(0,o.kt)("h5",{id:"sockettimeoutmillis"},(0,o.kt)("inlineCode",{parentName:"h5"},"socketTimeoutMillis")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"a maximum time of inactivity between two data packets when exchanging data with a server.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html#configure_plugin"},"Ktor HttpTimeout")),(0,o.kt)("h4",{id:"configwsconnecttimeout"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.wsConnectTimeout")),(0,o.kt)("p",null,"ws\u8fde\u63a5\u8d85\u65f6\u65f6\u95f4\uff0c\u5355\u4f4d ",(0,o.kt)("inlineCode",{parentName:"p"},"ms")," \u3002\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"6000")," \u6beb\u79d2\u3002"),(0,o.kt)("h4",{id:"configisnormaleventprocessasync"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.isNormalEventProcessAsync")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"ProcessorType.NORMAL")," \u7c7b\u578b\u7684\u4e8b\u4ef6\u5904\u7406\u5668\u662f\u5426\u5728\u5f02\u6b65\u4e2d\u6267\u884c\u3002\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"true"),"\u3002\n\u5f53\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"false")," \u65f6, ",(0,o.kt)("inlineCode",{parentName:"p"},"NORMAL")," \u7684\u8868\u73b0\u6548\u679c\u5c06\u4f1a\u4e0e ",(0,o.kt)("inlineCode",{parentName:"p"},"PREPARE")," \u57fa\u672c\u7c7b\u4f3c\u3002"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u4f60\u4e0d\u6253\u7b97\u76f4\u63a5\u64cd\u4f5c\u539f\u59cb\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Bot")," \u5bf9\u8c61\u6765\u6ce8\u518c\u4e00\u4e9b\u539f\u59cb\u7684\u76d1\u542c\u51fd\u6570\uff0c\n\u6b64\u914d\u7f6e\u9879\u5bf9\u4f60\u6765\u8bf4\u53ef\u80fd\u5c31\u6ca1\u6709\u592a\u5927\u7684\u4f5c\u7528\u3002")))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[775],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=i.createContext({}),c=function(e){var t=i.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(p.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,l=e.originalType,p=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),s=c(n),m=o,k=s["".concat(p,".").concat(m)]||s[m]||u[m]||l;return n?i.createElement(k,a(a({ref:t},d),{},{components:n})):i.createElement(k,a({ref:t},d))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=n.length,a=new Array(l);a[0]=m;var r={};for(var p in t)hasOwnProperty.call(t,p)&&(r[p]=t[p]);r.originalType=e,r[s]="string"==typeof e?e:o,a[1]=r;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});var i=n(7462),o=(n(7294),n(3905));const l={title:"BOT\u914d\u7f6e\u6587\u4ef6"},a=void 0,r={unversionedId:"bot-config/index",id:"bot-config/index",title:"BOT\u914d\u7f6e\u6587\u4ef6",description:"\u672c\u7ae0\u8282\u4f1a\u63d0\u4f9b bot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u5404\u5c5e\u6027\u7684\u542b\u4e49\u4ee5\u53ca\u793a\u4f8b\u3002",source:"@site/docs/bot-config/index.md",sourceDirName:"bot-config",slug:"/bot-config/",permalink:"/docs/bot-config/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/bot-config/index.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"BOT\u914d\u7f6e\u6587\u4ef6"},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/quick-start/spring-boot"},next:{title:"\u6d88\u606f",permalink:"/docs/basic/message"}},p={},c=[{value:"\u793a\u4f8b",id:"\u793a\u4f8b",level:2},{value:"\u5c5e\u6027\u63cf\u8ff0",id:"\u5c5e\u6027\u63cf\u8ff0",level:2},{value:"component",id:"component",level:3},{value:"ticket",id:"ticket",level:3},{value:"ticket.clientId",id:"ticketclientid",level:4},{value:"ticket.token",id:"tickettoken",level:4},{value:"config",id:"config",level:3},{value:"config.isCompress",id:"configiscompress",level:4},{value:"config.syncPeriods",id:"configsyncperiods",level:4},{value:"syncPeriods.guild",id:"syncperiodsguild",level:5},{value:"syncPeriods.guild.syncPeriod",id:"syncperiodsguildsyncperiod",level:5},{value:"syncPeriods.guild.batchDelay",id:"syncperiodsguildbatchdelay",level:5},{value:"config.clientEngineConfig & config.wsEngineConfig",id:"configclientengineconfig--configwsengineconfig",level:4},{value:"threadsCount",id:"threadscount",level:5},{value:"pipelining",id:"pipelining",level:5},{value:"config.timeout",id:"configtimeout",level:4},{value:"connectTimeoutMillis",id:"connecttimeoutmillis",level:5},{value:"requestTimeoutMillis",id:"requesttimeoutmillis",level:5},{value:"socketTimeoutMillis",id:"sockettimeoutmillis",level:5},{value:"config.wsConnectTimeout",id:"configwsconnecttimeout",level:4},{value:"config.isNormalEventProcessAsync",id:"configisnormaleventprocessasync",level:4}],d={toc:c},s="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"\u672c\u7ae0\u8282\u4f1a\u63d0\u4f9b bot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u5404\u5c5e\u6027\u7684\u542b\u4e49\u4ee5\u53ca\u793a\u4f8b\u3002"),(0,o.kt)("admonition",{title:"\u573a\u666f",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"bot \u7684\u914d\u7f6e\u6587\u4ef6\u901a\u5e38\u5e94\u7528\u4e8e\u591a\u7ec4\u4ef6\u5e94\u7528\u6216 Spring Boot \u9879\u76ee\u4e2d\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5bf9\u4e8e\u4f7f\u7528Kotlin\u3001\u4e0d\u4f7f\u7528SpringBoot\u7684\u5f00\u53d1\u8005\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u76f4\u63a5\u4f7f\u7528\u4ee3\u7801\u7684\u5f62\u5f0f\u8fdb\u884c\u914d\u7f6e\u3002")),(0,o.kt)("h2",{id:"\u793a\u4f8b"},"\u793a\u4f8b"),(0,o.kt)("p",null,"\u5b8c\u6574\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"title='xxx.bot.json'",title:"'xxx.bot.json'"},'{\n "component": "simbot.kook",\n "ticket": {\n "clientId": "Your client ID",\n "token": "Your ws token"\n },\n "config": {\n "isCompress": true,\n "syncPeriods": {\n "guild": {\n "syncPeriod": 180000,\n "batchDelay": 0\n },\n "clientEngineConfig": {\n "threadsCount": null,\n "pipelining": null\n },\n "wsEngineConfig": {\n "threadsCount": null,\n "pipelining": null\n },\n "timeout": {\n "connectTimeoutMillis": 5000,\n "requestTimeoutMillis": 5000,\n "socketTimeoutMillis": null\n },\n "wsConnectTimeout": null,\n "isNormalEventProcessAsync": null\n }\n }\n}\n')),(0,o.kt)("p",null,"\u6700\u7b80\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"title='xxx.bot.json'",title:"'xxx.bot.json'"},'{\n "component": "simbot.kook",\n "ticket": {\n "clientId": "Your client ID",\n "token": "Your ws token"\n }\n}\n')),(0,o.kt)("h2",{id:"\u5c5e\u6027\u63cf\u8ff0"},"\u5c5e\u6027\u63cf\u8ff0"),(0,o.kt)("h3",{id:"component"},(0,o.kt)("inlineCode",{parentName:"h3"},"component")),(0,o.kt)("p",null,"\u56fa\u5b9a\u503c ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot.kook"),"\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u5fc5\u586b"),"\uff0c\u4ee3\u8868\u6b64\u914d\u7f6e\u6587\u4ef6\u4e3aKOOK\u7ec4\u4ef6\u7684\u3002"),(0,o.kt)("h3",{id:"ticket"},(0,o.kt)("inlineCode",{parentName:"h3"},"ticket")),(0,o.kt)("p",null,"\u5bf9 bot \u8eab\u4efd\u8fdb\u884c\u6821\u9a8c\u3001\u8bbf\u95ee KOOK API \u4ee5\u53ca\u8fde\u63a5KOOK\u670d\u52a1\u5668\u8fdb\u884c\u4e8b\u4ef6\u8ba2\u9605\u65f6\u6240\u9700\u7684 bot \u7968\u636e\u4fe1\u606f\u3002"),(0,o.kt)("admonition",{title:"\u5728\u54ea\u513f?",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u53ef\u4ee5\u5728 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u5f00\u53d1\u8005\u5e73\u53f0-\u5e94\u7528")," \u4e2d\u67e5\u770b\u3002")),(0,o.kt)("h4",{id:"ticketclientid"},(0,o.kt)("inlineCode",{parentName:"h4"},"ticket.clientId")),(0,o.kt)("p",null,"BOT\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Client ID"),"\u3002"),(0,o.kt)("h4",{id:"tickettoken"},(0,o.kt)("inlineCode",{parentName:"h4"},"ticket.token")),(0,o.kt)("p",null,"BOT\u4f7f\u7528 ",(0,o.kt)("strong",{parentName:"p"},"websocket")," \u6a21\u5f0f\u8fdb\u884c\u8fde\u63a5\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"token")," ."),(0,o.kt)("h3",{id:"config"},(0,o.kt)("inlineCode",{parentName:"h3"},"config")),(0,o.kt)("p",null,"\u5176\u4ed6\u914d\u7f6e\uff0c\u53ef\u9009\u3002"),(0,o.kt)("h4",{id:"configiscompress"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.isCompress")),(0,o.kt)("p",null,"\u662f\u5426\u538b\u7f29\u6570\u636e\u3002\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"true"),"\u3002"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/gateway"},"Gateway API")," \u4e2d\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"compress")," \u53c2\u6570\u3002")),(0,o.kt)("h4",{id:"configsyncperiods"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.syncPeriods")),(0,o.kt)("p",null,"\u7f13\u5b58\u5bf9\u8c61\u4fe1\u606f\u7684\u540c\u6b65\u5468\u671f\u914d\u7f6e\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "syncPeriods": {\n "guild": {\n "syncPeriod": 180000,\n "batchDelay": 0\n }\n }\n }\n}\n')),(0,o.kt)("details",null,(0,o.kt)("summary",null,"\u8bd5\u7740\u5173\u95ed\u5b83\uff01"),(0,o.kt)("p",null,"\u4ece ",(0,o.kt)("inlineCode",{parentName:"p"},"v3.2.0.0-alpha.8")," \u91cd\u6784\u4e4b\u540e\uff0c\u6570\u636e\u7684\u540c\u6b65\u673a\u5236\u6bd4\u4e4b\u524d\u7684\u7248\u672c\u800c\u8a00\u66f4\u52a0\u7a33\u5b9a\u3002\n\u5982\u679c\u4f60\u6709\u5174\u8da3\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u76f4\u63a5",(0,o.kt)("strong",{parentName:"p"},"\u7981\u7528\u5b9a\u65f6\u540c\u6b65"),"\u6765\u89c2\u5bdf\u6570\u636e\u662f\u5426\u4f1a\u51fa\u73b0\u5dee\u9519\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "syncPeriods": {\n "guild": {\n "syncPeriod": 0,\n "batchDelay": 0\n }\n }\n }\n}\n')),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"\u5c06 ",(0,o.kt)("inlineCode",{parentName:"em"},"syncPeriod")," \u8bbe\u7f6e\u4e3a ",(0,o.kt)("inlineCode",{parentName:"em"},"0")," \u5373\u53ef\u5173\u95ed"))),(0,o.kt)("p",null,"\u5728\u9884\u671f\u4e2d\uff0c\u4ec5\u901a\u8fc7\u4e8b\u4ef6\u7684\u901a\u77e5\u5c31\u5e94\u6ee1\u8db3\u5bf9\u5185\u90e8\u7f13\u5b58\u7684\u540c\u6b65\u66f4\u65b0\u3002\u56e0\u6b64\u6211\u4eec\u5e0c\u671b\u53ef\u4ee5\u5728\u5b8c\u5168\u7981\u7528\u5b9a\u65f6\u540c\u6b65\u7684\u60c5\u51b5\u4e0b\u4f9d\u65e7\u53ef\u4ee5\u4fdd\u8bc1\u7f13\u5b58\u6570\u636e\u7684\u51c6\u786e\u6027\u3002\n\u4f46\u662f\u76ee\u524d\u6d4b\u8bd5\u6216\u53cd\u9988\u7684\u6570\u636e\u4ecd\u7136\u4e0d\u8db3\uff0c\u6211\u4eec\u65e0\u6cd5\u5b8c\u5168\u9884\u5224\u7981\u7528\u5b9a\u65f6\u540c\u6b65\u53ef\u80fd\u9020\u6210\u7684\u540e\u679c\u6216\u5982\u679c\u56e0\u6b64\u800c\u4ea7\u751f\u7f13\u5b58\u6570\u636e\u4e0d\u51c6\u786e\u7684\u53ef\u80fd\u539f\u56e0\u3002"),(0,o.kt)("p",null,"\u56e0\u6b64\u6211\u4eec\u5e0c\u671b\u4f60\u5728\u53ef\u63a7\u8303\u56f4\u5185\u66f4\u591a\u7684\u5c1d\u8bd5",(0,o.kt)("strong",{parentName:"p"},"\u7981\u7528\u5b9a\u65f6\u540c\u6b65"),"\u5e76\u5728\u51fa\u73b0\u95ee\u9898\u65f6\u53ca\u65f6",(0,o.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot/issues/new/choose"},(0,o.kt)("strong",{parentName:"a"},"\u53cd\u9988")),"\uff0c\n\u8fd9\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u5b8c\u5584\u5185\u90e8\u7684\u7f13\u5b58\u673a\u5236\u3002"),(0,o.kt)("p",null,"\u611f\u8c22\u60a8\u7684\u652f\u6301\u4e0e\u8d21\u732e\uff01")),(0,o.kt)("h5",{id:"syncperiodsguild"},(0,o.kt)("inlineCode",{parentName:"h5"},"syncPeriods.guild")),(0,o.kt)("p",null,"\u5bf9\u9891\u9053\u670d\u52a1\u5668\u8fdb\u884c\u540c\u6b65\u7684\u5468\u671f\u4fe1\u606f\u914d\u7f6e\uff0c\u5355\u4f4d\u6beb\u79d2\u3002"),(0,o.kt)("h5",{id:"syncperiodsguildsyncperiod"},(0,o.kt)("inlineCode",{parentName:"h5"},"syncPeriods.guild.syncPeriod")),(0,o.kt)("p",null,"\u5bf9\u9891\u9053\u670d\u52a1\u5668\u8fdb\u884c\u540c\u6b65\u7684\u5468\u671f\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c\u5927\u4e8e",(0,o.kt)("inlineCode",{parentName:"p"},"0"),"\u65f6\u6709\u6548\u3002\u76ee\u524d\u670d\u52a1\u5668\u540c\u6b65\u7684\u540c\u65f6\u4f1a\u53bb\u540c\u6b65\u6b64\u670d\u52a1\u5668\u4e0b\u7684\u6240\u6709\u9891\u9053\u5217\u8868\u4e0e\u6210\u5458\u5217\u8868\u3002"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"180000"),"\uff0c\u5373 ",(0,o.kt)("inlineCode",{parentName:"p"},"180000\u6beb\u79d2 -> 180\u79d2 -> 3\u5206\u949f"),"\u3002"),(0,o.kt)("p",null,"\u8fdb\u884c\u914d\u7f6e\u7684\u65f6\u5019\u9700\u8981\u6ce8\u610f\u8003\u8651\u8c03\u7528\u9891\u7387\u4e0a\u9650\u7b49\u76f8\u5173\u95ee\u9898\u3002"),(0,o.kt)("h5",{id:"syncperiodsguildbatchdelay"},(0,o.kt)("inlineCode",{parentName:"h5"},"syncPeriods.guild.batchDelay")),(0,o.kt)("p",null,"\u540c\u6b65\u6570\u636e\u662f\u5206\u9875\u5206\u6279\u6b21\u7684\u540c\u6b65\u3002",(0,o.kt)("inlineCode",{parentName:"p"},"batchDelay")," \u914d\u7f6e\u6bcf\u6279\u6b21\u540e\u8fdb\u884c\u6302\u8d77\u7b49\u5f85\u7684\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\u3002\n\u53ef\u4ee5\u901a\u8fc7\u8c03\u5927\u6b64\u53c2\u6570\u6765\u51cf\u7f13 API \u7684\u8bf7\u6c42\u901f\u7387, \u9ed8\u8ba4\u4e0d\u7b49\u5f85\u3002"),(0,o.kt)("p",null,"\u914d\u7f6e\u6b64\u5c5e\u6027\u53ef\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u964d\u4f4e\u89e6\u53d1\u8c03\u7528\u9891\u7387\u9650\u5236\u7684\u98ce\u9669\u3002"),(0,o.kt)("br",null),(0,o.kt)("details",null,(0,o.kt)("summary",null,"\u9ed8\u8ba4\u503c\u7684\u7531\u6765?"),(0,o.kt)("p",null,"\u4e00\u62cd\u8111\u74dc\u513f\u968f\u4fbf\u5199\u7684\u3002")),(0,o.kt)("h4",{id:"configclientengineconfig--configwsengineconfig"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.clientEngineConfig")," & ",(0,o.kt)("inlineCode",{parentName:"h4"},"config.wsEngineConfig")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"clientEngineConfig")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"wsEngineConfig")," \u4e24\u4e2a\u914d\u7f6e\u9879\u7c7b\u578b\u76f8\u540c\uff0c\u987e\u540d\u601d\u4e49\u5b83\u4eec\u5206\u522b\u662f\u9488\u5bf9 ",(0,o.kt)("inlineCode",{parentName:"p"},"API client")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"ws")," \u573a\u666f\u4e0b\u4f7f\u7528\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u5b9e\u4f8b\u7684\u5f15\u64ce\uff08\u901a\u7528\uff09\u914d\u7f6e\u9879\u3002"),(0,o.kt)("p",null,"\u5b83\u4eec\u7684\u914d\u7f6e\u9879\u90fd\u4e0e Ktor \u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"HttpClientEngineConfig")," \u7684\u914d\u7f6e\u76f8\u540c\uff0c\u6ca1\u6709\u989d\u5916\u7684\u542b\u4e49\u3002"),(0,o.kt)("h5",{id:"threadscount"},(0,o.kt)("inlineCode",{parentName:"h5"},"threadsCount")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Specifies network threads count advice.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#configure"},"Ktor\u6587\u6863")),(0,o.kt)("h5",{id:"pipelining"},(0,o.kt)("inlineCode",{parentName:"h5"},"pipelining")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Enables HTTP pipelining advice.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#configure"},"Ktor\u6587\u6863")),(0,o.kt)("h4",{id:"configtimeout"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.timeout")),(0,o.kt)("p",null,"BOT\u5185\u8fdb\u884cAPI\u8bf7\u6c42\u65f6\u5019\u7684\u8d85\u65f6\u65f6\u95f4\u914d\u7f6e\u3002\uff08\u57fa\u4e8e ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html"},"Ktor HttpTimeout"),"\uff09"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u5f53 ",(0,o.kt)("inlineCode",{parentName:"p"},"timeout")," \u672c\u8eab\u4e3anull\u65f6\uff0c\u4e0d\u4f1a\u8986\u76d6\u539f\u672c\u7684\u9ed8\u8ba4\u914d\u7f6e\u3002\u4f46\u5982\u679c ",(0,o.kt)("inlineCode",{parentName:"p"},"timeout")," \u4e0d\u4e3anull\uff0c\u5219\u4f1a\u76f4\u63a5\u4f7f\u7528\u6b64\u5bf9\u8c61\u5185\u4fe1\u606f\u76f4\u63a5\u5b8c\u6574\u8986\u76d6\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u4f8b\u5982\uff1a"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "timeout": null\n }\n}\n')),(0,o.kt)("p",{parentName:"admonition"},"\u6b64\u65f6\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"connectTimeoutMillis")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"requestTimeoutMillis")," \u90fd\u662f\u9ed8\u8ba4\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"5000"),"\uff0c\n\u800c\u5982\u679c\u914d\u7f6e\u662f\uff1a"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "timeout": {\n \n }\n }\n}\n')),(0,o.kt)("p",{parentName:"admonition"},"\u5219\u6240\u6709\u5c5e\u6027\u90fd\u4f1a\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"null"),"\u3002")),(0,o.kt)("h5",{id:"connecttimeoutmillis"},(0,o.kt)("inlineCode",{parentName:"h5"},"connectTimeoutMillis")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"a time period required to process an HTTP call: from sending a request to receiving a response.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html#configure_plugin"},"Ktor HttpTimeout")),(0,o.kt)("h5",{id:"requesttimeoutmillis"},(0,o.kt)("inlineCode",{parentName:"h5"},"requestTimeoutMillis")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"a time period in which a client should establish a connection with a server.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html#configure_plugin"},"Ktor HttpTimeout")),(0,o.kt)("h5",{id:"sockettimeoutmillis"},(0,o.kt)("inlineCode",{parentName:"h5"},"socketTimeoutMillis")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"a maximum time of inactivity between two data packets when exchanging data with a server.")),(0,o.kt)("p",null,"\u66f4\u591a\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/timeout.html#configure_plugin"},"Ktor HttpTimeout")),(0,o.kt)("h4",{id:"configwsconnecttimeout"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.wsConnectTimeout")),(0,o.kt)("p",null,"ws\u8fde\u63a5\u8d85\u65f6\u65f6\u95f4\uff0c\u5355\u4f4d ",(0,o.kt)("inlineCode",{parentName:"p"},"ms")," \u3002\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"6000")," \u6beb\u79d2\u3002"),(0,o.kt)("h4",{id:"configisnormaleventprocessasync"},(0,o.kt)("inlineCode",{parentName:"h4"},"config.isNormalEventProcessAsync")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"ProcessorType.NORMAL")," \u7c7b\u578b\u7684\u4e8b\u4ef6\u5904\u7406\u5668\u662f\u5426\u5728\u5f02\u6b65\u4e2d\u6267\u884c\u3002\u9ed8\u8ba4\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"true"),"\u3002\n\u5f53\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"false")," \u65f6, ",(0,o.kt)("inlineCode",{parentName:"p"},"NORMAL")," \u7684\u8868\u73b0\u6548\u679c\u5c06\u4f1a\u4e0e ",(0,o.kt)("inlineCode",{parentName:"p"},"PREPARE")," \u57fa\u672c\u7c7b\u4f3c\u3002"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u4f60\u4e0d\u6253\u7b97\u76f4\u63a5\u64cd\u4f5c\u539f\u59cb\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Bot")," \u5bf9\u8c61\u6765\u6ce8\u518c\u4e00\u4e9b\u539f\u59cb\u7684\u76d1\u542c\u51fd\u6570\uff0c\n\u6b64\u914d\u7f6e\u9879\u5bf9\u4f60\u6765\u8bf4\u53ef\u80fd\u5c31\u6ca1\u6709\u592a\u5927\u7684\u4f5c\u7528\u3002")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/34fd8ba9.ba356f90.js b/assets/js/34fd8ba9.403fbf4a.js similarity index 99% rename from assets/js/34fd8ba9.ba356f90.js rename to assets/js/34fd8ba9.403fbf4a.js index 25f8824f..5e9ca0f6 100644 --- a/assets/js/34fd8ba9.ba356f90.js +++ b/assets/js/34fd8ba9.403fbf4a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[173],{5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),o=n(6010);const r={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>T});var a=n(7462),o=n(7294),r=n(6010),i=n(2466),l=n(6550),p=n(1980),s=n(7392),m=n(12);function u(e){return function(e){return o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:o}}=e;return{value:t,label:n,attributes:a,default:o}}))}function c(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function k(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const a=(0,l.k6)(),r=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,p._X)(r),(0,o.useCallback)((e=>{if(!r)return;const t=new URLSearchParams(a.location.search);t.set(r,e),a.replace({...a.location,search:t.toString()})}),[r,a])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,r=c(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!k({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:r}))),[p,s]=d({queryString:n,groupId:a}),[u,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,r]=(0,m.Nk)(n);return[a,(0,o.useCallback)((e=>{n&&r.set(e)}),[n,r])]}({groupId:a}),g=(()=>{const e=p??u;return k({value:e,tabValues:r})?e:null})();(0,o.useLayoutEffect)((()=>{g&&l(g)}),[g]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!k({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),s(e),b(e)}),[s,b,r]),tabValues:r}}var g=n(2389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:n,selectedValue:l,selectValue:p,tabValues:s}=e;const m=[],{blockElementScrollPositionUntilNextRender:u}=(0,i.o5)(),c=e=>{const t=e.currentTarget,n=m.indexOf(t),a=s[n].value;a!==l&&(u(t),p(a))},k=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=m.indexOf(e.currentTarget)+1;t=m[n]??m[0];break}case"ArrowLeft":{const n=m.indexOf(e.currentTarget)-1;t=m[n]??m[m.length-1];break}}t?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:i}=e;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>m.push(e),onKeyDown:k,onClick:c},i,{className:(0,r.Z)("tabs__item",v.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function N(e){let{lazy:t,children:n,selectedValue:a}=e;const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=r.find((e=>e.props.value===a));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function f(e){const t=b(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",v.tabList)},o.createElement(h,(0,a.Z)({},e,t)),o.createElement(N,(0,a.Z)({},e,t)))}function T(e){const t=(0,g.Z)();return o.createElement(f,(0,a.Z)({key:String(t)},e))}},1970:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>m,default:()=>g,frontMatter:()=>s,metadata:()=>u,toc:()=>k});var a=n(7462),o=(n(7294),n(3905)),r=n(4866),i=n(5162),l=n(614),p=n(2965);const s={title:"\u4f7f\u7528SpringBoot",sidebar_position:4},m=void 0,u={unversionedId:"quick-start/spring-boot",id:"quick-start/spring-boot",title:"\u4f7f\u7528SpringBoot",description:"\u524d\u8a00",source:"@site/docs/quick-start/spring-boot.md",sourceDirName:"quick-start",slug:"/quick-start/spring-boot",permalink:"/docs/quick-start/spring-boot",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/spring-boot.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:4,frontMatter:{title:"\u4f7f\u7528SpringBoot",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/quick-start/simbot-core"},next:{title:"BOT\u914d\u7f6e\u6587\u4ef6",permalink:"/docs/bot-config/"}},c={},k=[{value:"\u524d\u8a00",id:"\u524d\u8a00",level:2},{value:"\u524d\u63d0\u51c6\u5907",id:"\u524d\u63d0\u51c6\u5907",level:2},{value:"\u9879\u76ee\u6784\u5efa",id:"\u9879\u76ee\u6784\u5efa",level:2},{value:"BOT\u914d\u7f6e",id:"bot\u914d\u7f6e",level:2},{value:"\u542f\u52a8\u7c7b",id:"\u542f\u52a8\u7c7b",level:2},{value:"\u76d1\u542c\u4e8b\u4ef6",id:"\u76d1\u542c\u4e8b\u4ef6",level:2},{value:"\u542f\u52a8",id:"\u542f\u52a8",level:2},{value:"\u66f4\u591a",id:"\u66f4\u591a",level:2}],d={toc:k},b="wrapper";function g(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u524d\u8a00"},"\u524d\u8a00"),(0,o.kt)("p",null,"\u672c\u7f16\u6587\u6863\u4ecb\u7ecd\u4f7f\u7528:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simboot-core-spring-boot-starter"),": ",(0,o.kt)("inlineCode",{parentName:"li"},"simbot3")," \u7684 Spring Boot Starter"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simbot-component-kook-core"),": ",(0,o.kt)("inlineCode",{parentName:"li"},"simbot3")," \u7684 KOOK \u7ec4\u4ef6")),(0,o.kt)("p",null,"\u6765\u7f16\u5199\u642d\u5efa\u4e00\u4e2a\u57fa\u4e8esimbot\u548cSpring\u7684KOOK\u673a\u5668\u4eba\u9879\u76ee\u3002"),(0,o.kt)("h2",{id:"\u524d\u63d0\u51c6\u5907"},"\u524d\u63d0\u51c6\u5907"),(0,o.kt)("p",null,"\u9996\u5148\u4f60\u5e94\u5f53\u51c6\u5907\u81f3\u5c11\u4e00\u4e2a\u53ef\u7528\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u673a\u5668\u4eba")," \u3002"),(0,o.kt)("h2",{id:"\u9879\u76ee\u6784\u5efa"},"\u9879\u76ee\u6784\u5efa"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"1. \u51c6\u5907 Spring Boot \u9879\u76ee")),(0,o.kt)("p",null,"\u9996\u5148\u51c6\u5907\u4e00\u4e2aSpringBoot\u9879\u76ee\u3002\u53ef\u4ee5\u8003\u8651\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://start.spring.io"},"start.spring.io")," \u6216\u501f\u52a9IDE\u7b49\u5de5\u5177\u3002"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2. \u6dfb\u52a0 simbot \u4f9d\u8d56")),(0,o.kt)("p",null,"\u7136\u540e",(0,o.kt)("strong",{parentName:"p"},"\u989d\u5916\u6dfb\u52a0"),"\u4e24\u4e2a\u6211\u4eec\u9700\u8981\u7684\u4f9d\u8d56\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.boot:simboot-core-spring-boot-starter")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simpler-robot/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.component:simbot-component-kook-core")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")")),(0,o.kt)("admonition",{title:"\u4fdd\u6301\u4f4f",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u6ce8\u610f\uff0c\u5728\u4f7f\u7528 Spring Boot \u7684\u65f6\u5019\u4f60\u9700\u8981\u4e00\u4e9b\u80fd\u591f\u4f7f\u7a0b\u5e8f\u4fdd\u6301\u8fd0\u884c\u7684\u7ec4\u4ef6\uff0c\u4f8b\u5982\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"spring-web")," \u542f\u7528\u4e00\u4e2a\u670d\u52a1\u5668\uff0c\u5426\u5219\u7a0b\u5e8f\u53ef\u80fd\u4f1a\u81ea\u52a8\u7ec8\u6b62\u3002\n\u56e0\u4e3asimbot\u7684 starter \u5e76\u4e0d\u63d0\u4f9b\u7ef4\u6301\u7a0b\u5e8f\u8fd0\u884c\u7684\u80fd\u529b\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5f53\u7136\uff0c\u4f60\u4e5f\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\u4e00\u4e2a\u7ebf\u7a0b\u6765\u81ea\u884c\u5b9e\u73b0\u7a0b\u5e8f\u4fdd\u6d3b\u3002")),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\n// simbot core starter \nimplementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION") // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6 \nimplementation("love.forte.simbot.component:simbot-component-kook-core:${p.i}") // \u7248\u672c\u53ef\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\n// simbot core starter\nimplementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6\nimplementation 'love.forte.simbot.component:simbot-component-kook-core:${p.i}' // \u7248\u672c\u53ef\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\x3c!-- simbot core starter --\x3e\n\n love.forte.simbot.boot\n simboot-core-spring-boot-starter\n \x3c!-- \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n \${SIMBOT_VERSION}\n\n\x3c!-- KOOK\u7ec4\u4ef6 --\x3e\n\n love.forte.simbot.component\n simbot-component-kook-core\n \x3c!-- \u7248\u672c\u53ef\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n ${p.i}\n\n`.trim()))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"3. \u9009\u62e9\u5e76\u5b89\u88c5\u5408\u9002\u7684 Ktor Client \u4f9d\u8d56")),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html"},"Ktor: HTTP client Engines")," \u9009\u62e9\u5e76\u4f7f\u7528\u4e00\u4e2a\u5408\u9002\u7684\u3001\u652f\u6301 websocket \u8fde\u63a5 \u7684 HTTP Client \u5f15\u64ce\u3002"),(0,o.kt)("admonition",{title:"\u9650\u5236\u6761\u4ef6",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f:")," \u4f60\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"HTTP 1.1"),"\u548c",(0,o.kt)("strong",{parentName:"p"},"WS Client"),"\u7684\u5f15\u64ce\u3002\u90e8\u5206\u5f15\u64ce\u53ef\u80fd\u4e0d\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"WS Client"),"\uff0c\u8bf7\u6ce8\u610f\u533a\u5206\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5404\u5f15\u64ce\u5b9e\u73b0\u7684\u9650\u5236\u53ef\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#limitations"},"Ktor\u6587\u6863"),"\u3002")),(0,o.kt)("p",null,"\u4f8b\u5982\uff1a"),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,o.kt)("p",null,"\u5982\u679c\u6ca1\u6709\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff0c\u5219\u4e3b\u52a8\u5206\u914d\u5e73\u53f0\u540e\u7f00\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio-jvm:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-groovy"},"// \u6216\u4f7f\u7528 runtimeOnly\nimplementation 'io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>'\n")),(0,o.kt)("p",null,"\u5982\u679c\u6ca1\u6709\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff0c\u5219\u4e3b\u52a8\u5206\u914d\u5e73\u53f0\u540e\u7f00\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},"// \u6216\u4f7f\u7528 runtimeOnly\nimplementation 'io.ktor:ktor-client-cio-jvm:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>'\n")),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-groovy"},"// \u6216\u4f7f\u7528 runtimeOnly\nimplementation 'io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>'\n"))),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-cio-jvm\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-java\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")))),(0,o.kt)("h2",{id:"bot\u914d\u7f6e"},"BOT\u914d\u7f6e"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u5728\u9879\u76ee",(0,o.kt)("strong",{parentName:"p"},"\u8d44\u6e90\u6587\u4ef6"),"\u76ee\u5f55\u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot-bots")," \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u914d\u7f6ebot\u7684\u914d\u7f6e\u6587\u4ef6 ",(0,o.kt)("inlineCode",{parentName:"p"},"xxx.bot.json")," ( \u6587\u4ef6\u540d\u968f\u610f\uff0c\u6269\u5c55\u540d\u5e94\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},".bot")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},".bot.json")," ) \u3002"),(0,o.kt)("p",null,"\u914d\u7f6e\u6587\u4ef6\u7684\u5177\u4f53\u5185\u5bb9\u5219\u53c2\u8003\u7ae0\u8282 ",(0,o.kt)("a",{parentName:"p",href:"../bot-config"},(0,o.kt)("strong",{parentName:"a"},"BOT\u914d\u7f6e\u6587\u4ef6"))," \u3002"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"\u6b64\u8def\u5f84\u4ee5 IDEA \u7684\u9879\u76ee\u7ed3\u6784\u98ce\u683c\u4e3a\u51c6\uff0c\u5982\u679c\u662f\u5176\u4ed6IDE\uff0c\u4f7f\u7528\u5bf9\u5e94\u7684\u8d44\u6e90\u6587\u4ef6\u76ee\u5f55\u3002")),(0,o.kt)("pre",{parentName:"blockquote"},(0,o.kt)("code",{parentName:"pre"},"${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json\n"))),(0,o.kt)("admonition",{title:"\u53ef\u914d\u7f6e",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u60f3\u8981\u4fee\u6539\u6b64\u8def\u5f84\uff0c\u53ef\u5728 Spring Boot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u8fdb\u884c\u914d\u7f6e\uff1a"),(0,o.kt)(r.Z,{groupId:"spring-boot-config",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"properties",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-properties"},"# \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n# \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n# \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\nsimbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot*\n"))),(0,o.kt)(i.Z,{value:"YAML",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"simbot:\n # \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n # \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n # \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\n bot-configuration-resources:\n - 'classpath:simbot-bots/*.bot*'\n"))))),(0,o.kt)("h2",{id:"\u542f\u52a8\u7c7b"},"\u542f\u52a8\u7c7b"),(0,o.kt)("p",null,"\u50cf\u6bcf\u4e00\u4e2a Spring Boot \u5e94\u7528\u4e00\u6837\uff0c\u4f60\u9700\u8981\u4e00\u4e2a\u542f\u52a8\u7c7b\uff0c\u5e76\u901a\u8fc7\u6807\u6ce8 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u6765\u542f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot")," \uff1a"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.App.kt'",title:"'com.example.App.kt'"},"@EnableSimbot\n@SpringBootApplication\nclass App\n\nfun main(vararg args: String) {\n runApplication(args = args)\n}\n"))),(0,o.kt)(i.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u65e9\u6709\u9884\u9632",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u4f60\u5728Java\u4e2d\u9047\u5230\u4e86\u65e0\u6cd5\u5f15\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u7b49\u60c5\u51b5\uff0c\u6216\u8bb8\u53ef\u4ee5\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/faq/%E5%8C%85%E5%BC%95%E7%94%A8%E5%BC%82%E5%B8%B8/"},(0,o.kt)("strong",{parentName:"a"},"\u8fd9\u7bc7FAQ")),"\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.App.java'",title:"'com.example.App.java'"},"@EnableSimbot\n@SpringBootApplication\npublic class App {\n public static void main(String[] args) {\n SpringApplication.run(App.class, args);\n }\n}\n")))),(0,o.kt)("h2",{id:"\u76d1\u542c\u4e8b\u4ef6"},"\u76d1\u542c\u4e8b\u4ef6"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\u5c31\u662f\u903b\u8f91\u4ee3\u7801\u6240\u5728\u7684\u5730\u65b9\u4e86\uff0c\u7f16\u5199\u4e00\u4e2a\u76d1\u542c\u51fd\u6570\u5e76\u76d1\u542c\u4e00\u4e2a\u4e8b\u4ef6\u3002"),(0,o.kt)("p",null,"\u6b64\u5904\u6211\u4eec\u76d1\u542c ",(0,o.kt)("inlineCode",{parentName:"p"},"ChannelMessageEvent"),"\uff0c\u4e5f\u5c31\u662f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"\u5b50\u9891\u9053\u7684\u6d88\u606f\u4e8b\u4ef6")),"\u3002"),(0,o.kt)("p",null,"\u5047\u8bbe\uff1a\u8981\u6c42bot\u5fc5\u987b",(0,o.kt)("strong",{parentName:"p"},"\u88abAT"),"\uff0c\u5e76\u4e14\u8bf4\u4e00\u53e5 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u597d"),"\uff0c\u6b64\u65f6bot\u4f1a",(0,o.kt)("strong",{parentName:"p"},"\u5f15\u7528"),"\u7528\u6237\u53d1\u9001\u7684\u6d88\u606f\u5e76\u56de\u590d ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u4e5f\u597d!")," \uff0c\u7c7b\u4f3c\u4e8e\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"\u7528\u6237: \n@BOT \u4f60\u597d\n\nBOT:\n> \u7528\u6237: @BOT \u4f60\u597d\n\u4f60\u4e5f\u597d! \n")),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.listener.ExampleListener.kt'",title:"'com.example.listener.ExampleListener.kt'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n\n@Component\nclass ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n suspend fun onChannelMessage(event: ChannelMessageEvent) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n event.reply("\u4f60\u4e5f\u597d!")\n }\n}\n\n\n'))),(0,o.kt)(i.Z,{value:"Java",label:"Java Blocking",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public void onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n // Java\u4e2d\u7684\u963b\u585e\u5f0fAPI\n event.replyBlocking("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n // \u5c06 CompletableFuture \u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return event.replyAsync("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Reactive",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u6709\u8981\u6c42",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u8fd4\u56de\u503c\u662f\u9700\u8981\u7b2c\u4e09\u65b9\u5e93\u7684\u54cd\u5e94\u5f0f\u7c7b\u578b\uff0c\u90a3\u4e48\u4f60\u7684\u9879\u76ee\u73af\u5883\u4f9d\u8d56\u4e2d\u5fc5\u987b\u5b58\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Kotlin courotines")," \u5bf9\u5176\u7684\u652f\u6301\u5e93\u624d\u53ef\u4f7f\u7528\u3002\n\u4f60\u53ef\u4ee5\u53c2\u8003simbot\u6587\u6863: ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/basic/event-listener#%E5%8F%AF%E5%93%8D%E5%BA%94%E5%BC%8F%E7%9A%84%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%9C"},"\u54cd\u5e94\u5f0f\u7684\u5904\u7406\u7ed3\u679c")," \u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public Mono onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n // \u5c06 Mono \u7b49\u54cd\u5e94\u5f0f\u7c7b\u578b\u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return Mono.fromCompletionStage(event.replyAsync("\u4f60\u4e5f\u597d!"));\n }\n \n}\n')))),(0,o.kt)("h2",{id:"\u542f\u52a8"},"\u542f\u52a8"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u542f\u52a8\u7a0b\u5e8f\u5e76\u5728\u4f60\u7684\u6c99\u7bb1\u9891\u9053\u4e2d@\u5b83\u8bd5\u8bd5\u770b\u5427\u3002"),(0,o.kt)("p",null,"\u5f53\u7136\uff0c\u5982\u679c\u9047\u5230\u4e86\u9884\u671f\u5916\u7684\u95ee\u9898\u4e5f\u4e0d\u8981\u614c\uff0c\u79ef\u6781\u53cd\u9988\u95ee\u9898\u624d\u80fd\u4f7f\u6211\u4eec\u53d8\u5f97\u66f4\u597d\uff0c\u53ef\u4ee5\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot/issues"},"Issues")," \u53cd\u9988\u95ee\u9898\u3001",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u95ee\u3002"),(0,o.kt)("h2",{id:"\u66f4\u591a"},"\u66f4\u591a"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love"},"simbot3\u5b98\u7f51")," \u6765\u4e86\u89e3simbot3\u7684\u5404",(0,o.kt)("strong",{parentName:"p"},"\u901a\u7528\u80fd\u529b"),"\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love"},"API\u6587\u6863")," \u6216\u901a\u8fc7\u6e90\u7801\u7ffb\u9605\u3001\u641c\u7d22\u5e76\u4e86\u89e3\u5177\u4f53\u7684\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u60d1\u3002"),(0,o.kt)("p",null,"\u6700\u7ec8\uff0c\u672c\u624b\u518c\u7f51\u7ad9\u53ef\u80fd\u4f1a\u65f6\u4e0d\u65f6\u7684\u66f4\u65b0\u4e00\u4e9b\u5b9e\u7528\u6027\u7684\u5e94\u7528\u6587\u6863\u3002"),(0,o.kt)("admonition",{title:"\u7cbe\u529b\u6709\u9650 ",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u7f16\u5199\u4f7f\u7528\u624b\u518c\u662f\u6781\u5176\u6d88\u8017\u7cbe\u529b\u7684\u4e8b\u60c5\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4f1a\u9996\u5148\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"\u6e90\u7801\u7684\u6587\u6863\u6ce8\u91ca"),"\u7684\u5168\u9762\u6027\uff0c\u540c\u65f6\u7531\u6b64\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"API\u6587\u6863"),"\u7684\u8bf4\u660e\u59cb\u7ec8\u662f\u7d27\u968f\u6e90\u7801\u751f\u6210\u800c\u5b8c\u6574\u7684\u3002\uff08API\u6587\u6863\u4f1a\u968f\u7740\u7248\u672c\u7684\u53d1\u5e03\u81ea\u52a8\u90e8\u7f72\uff09"),(0,o.kt)("p",{parentName:"admonition"},"\u5176\u6b21\uff0c\u6211\u4eec\u4f1a\u5c3d\u53ef\u80fd\u7684\u53ca\u65f6\u5e76\u5168\u9762\u7684\u56de\u590d",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},(0,o.kt)("strong",{parentName:"a"},"\u793e\u533a")),"\u4e2d\u7684\u76f8\u5173\u7591\u60d1\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6700\u7ec8\uff0c\u6211\u4eec\u624d\u4f1a\u8003\u8651\u5b8c\u5584\u672c\u624b\u518c\u7f51\u7ad9\u3002")))}g.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[173],{5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),o=n(6010);const r={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>T});var a=n(7462),o=n(7294),r=n(6010),i=n(2466),l=n(6550),p=n(1980),s=n(7392),m=n(12);function u(e){return function(e){return o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:o}}=e;return{value:t,label:n,attributes:a,default:o}}))}function c(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function k(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const a=(0,l.k6)(),r=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,p._X)(r),(0,o.useCallback)((e=>{if(!r)return;const t=new URLSearchParams(a.location.search);t.set(r,e),a.replace({...a.location,search:t.toString()})}),[r,a])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,r=c(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!k({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:r}))),[p,s]=d({queryString:n,groupId:a}),[u,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,r]=(0,m.Nk)(n);return[a,(0,o.useCallback)((e=>{n&&r.set(e)}),[n,r])]}({groupId:a}),g=(()=>{const e=p??u;return k({value:e,tabValues:r})?e:null})();(0,o.useLayoutEffect)((()=>{g&&l(g)}),[g]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!k({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),s(e),b(e)}),[s,b,r]),tabValues:r}}var g=n(2389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:n,selectedValue:l,selectValue:p,tabValues:s}=e;const m=[],{blockElementScrollPositionUntilNextRender:u}=(0,i.o5)(),c=e=>{const t=e.currentTarget,n=m.indexOf(t),a=s[n].value;a!==l&&(u(t),p(a))},k=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=m.indexOf(e.currentTarget)+1;t=m[n]??m[0];break}case"ArrowLeft":{const n=m.indexOf(e.currentTarget)-1;t=m[n]??m[m.length-1];break}}t?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:i}=e;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>m.push(e),onKeyDown:k,onClick:c},i,{className:(0,r.Z)("tabs__item",v.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function N(e){let{lazy:t,children:n,selectedValue:a}=e;const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=r.find((e=>e.props.value===a));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function f(e){const t=b(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",v.tabList)},o.createElement(h,(0,a.Z)({},e,t)),o.createElement(N,(0,a.Z)({},e,t)))}function T(e){const t=(0,g.Z)();return o.createElement(f,(0,a.Z)({key:String(t)},e))}},1970:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>m,default:()=>g,frontMatter:()=>s,metadata:()=>u,toc:()=>k});var a=n(7462),o=(n(7294),n(3905)),r=n(4866),i=n(5162),l=n(614),p=n(2965);const s={title:"\u4f7f\u7528SpringBoot",sidebar_position:4},m=void 0,u={unversionedId:"quick-start/spring-boot",id:"quick-start/spring-boot",title:"\u4f7f\u7528SpringBoot",description:"\u524d\u8a00",source:"@site/docs/quick-start/spring-boot.md",sourceDirName:"quick-start",slug:"/quick-start/spring-boot",permalink:"/docs/quick-start/spring-boot",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/spring-boot.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:4,frontMatter:{title:"\u4f7f\u7528SpringBoot",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/quick-start/simbot-core"},next:{title:"BOT\u914d\u7f6e\u6587\u4ef6",permalink:"/docs/bot-config/"}},c={},k=[{value:"\u524d\u8a00",id:"\u524d\u8a00",level:2},{value:"\u524d\u63d0\u51c6\u5907",id:"\u524d\u63d0\u51c6\u5907",level:2},{value:"\u9879\u76ee\u6784\u5efa",id:"\u9879\u76ee\u6784\u5efa",level:2},{value:"BOT\u914d\u7f6e",id:"bot\u914d\u7f6e",level:2},{value:"\u542f\u52a8\u7c7b",id:"\u542f\u52a8\u7c7b",level:2},{value:"\u76d1\u542c\u4e8b\u4ef6",id:"\u76d1\u542c\u4e8b\u4ef6",level:2},{value:"\u542f\u52a8",id:"\u542f\u52a8",level:2},{value:"\u66f4\u591a",id:"\u66f4\u591a",level:2}],d={toc:k},b="wrapper";function g(e){let{components:t,...n}=e;return(0,o.kt)(b,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u524d\u8a00"},"\u524d\u8a00"),(0,o.kt)("p",null,"\u672c\u7f16\u6587\u6863\u4ecb\u7ecd\u4f7f\u7528:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simboot-core-spring-boot-starter"),": ",(0,o.kt)("inlineCode",{parentName:"li"},"simbot3")," \u7684 Spring Boot Starter"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simbot-component-kook-core"),": ",(0,o.kt)("inlineCode",{parentName:"li"},"simbot3")," \u7684 KOOK \u7ec4\u4ef6")),(0,o.kt)("p",null,"\u6765\u7f16\u5199\u642d\u5efa\u4e00\u4e2a\u57fa\u4e8esimbot\u548cSpring\u7684KOOK\u673a\u5668\u4eba\u9879\u76ee\u3002"),(0,o.kt)("h2",{id:"\u524d\u63d0\u51c6\u5907"},"\u524d\u63d0\u51c6\u5907"),(0,o.kt)("p",null,"\u9996\u5148\u4f60\u5e94\u5f53\u51c6\u5907\u81f3\u5c11\u4e00\u4e2a\u53ef\u7528\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u673a\u5668\u4eba")," \u3002"),(0,o.kt)("h2",{id:"\u9879\u76ee\u6784\u5efa"},"\u9879\u76ee\u6784\u5efa"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"1. \u51c6\u5907 Spring Boot \u9879\u76ee")),(0,o.kt)("p",null,"\u9996\u5148\u51c6\u5907\u4e00\u4e2aSpringBoot\u9879\u76ee\u3002\u53ef\u4ee5\u8003\u8651\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://start.spring.io"},"start.spring.io")," \u6216\u501f\u52a9IDE\u7b49\u5de5\u5177\u3002"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2. \u6dfb\u52a0 simbot \u4f9d\u8d56")),(0,o.kt)("p",null,"\u7136\u540e",(0,o.kt)("strong",{parentName:"p"},"\u989d\u5916\u6dfb\u52a0"),"\u4e24\u4e2a\u6211\u4eec\u9700\u8981\u7684\u4f9d\u8d56\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.boot:simboot-core-spring-boot-starter")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simpler-robot/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.component:simbot-component-kook-core")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")")),(0,o.kt)("admonition",{title:"\u4fdd\u6301\u4f4f",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u6ce8\u610f\uff0c\u5728\u4f7f\u7528 Spring Boot \u7684\u65f6\u5019\u4f60\u9700\u8981\u4e00\u4e9b\u80fd\u591f\u4f7f\u7a0b\u5e8f\u4fdd\u6301\u8fd0\u884c\u7684\u7ec4\u4ef6\uff0c\u4f8b\u5982\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"spring-web")," \u542f\u7528\u4e00\u4e2a\u670d\u52a1\u5668\uff0c\u5426\u5219\u7a0b\u5e8f\u53ef\u80fd\u4f1a\u81ea\u52a8\u7ec8\u6b62\u3002\n\u56e0\u4e3asimbot\u7684 starter \u5e76\u4e0d\u63d0\u4f9b\u7ef4\u6301\u7a0b\u5e8f\u8fd0\u884c\u7684\u80fd\u529b\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5f53\u7136\uff0c\u4f60\u4e5f\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\u4e00\u4e2a\u7ebf\u7a0b\u6765\u81ea\u884c\u5b9e\u73b0\u7a0b\u5e8f\u4fdd\u6d3b\u3002")),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\n// simbot core starter \nimplementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION") // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6 \nimplementation("love.forte.simbot.component:simbot-component-kook-core:${p.i}") // \u7248\u672c\u53ef\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\n// simbot core starter\nimplementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6\nimplementation 'love.forte.simbot.component:simbot-component-kook-core:${p.i}' // \u7248\u672c\u53ef\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\x3c!-- simbot core starter --\x3e\n\n love.forte.simbot.boot\n simboot-core-spring-boot-starter\n \x3c!-- \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n \${SIMBOT_VERSION}\n\n\x3c!-- KOOK\u7ec4\u4ef6 --\x3e\n\n love.forte.simbot.component\n simbot-component-kook-core\n \x3c!-- \u7248\u672c\u53ef\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n ${p.i}\n\n`.trim()))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"3. \u9009\u62e9\u5e76\u5b89\u88c5\u5408\u9002\u7684 Ktor Client \u4f9d\u8d56")),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html"},"Ktor: HTTP client Engines")," \u9009\u62e9\u5e76\u4f7f\u7528\u4e00\u4e2a\u5408\u9002\u7684\u3001\u652f\u6301 websocket \u8fde\u63a5 \u7684 HTTP Client \u5f15\u64ce\u3002"),(0,o.kt)("admonition",{title:"\u9650\u5236\u6761\u4ef6",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f:")," \u4f60\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"HTTP 1.1"),"\u548c",(0,o.kt)("strong",{parentName:"p"},"WS Client"),"\u7684\u5f15\u64ce\u3002\u90e8\u5206\u5f15\u64ce\u53ef\u80fd\u4e0d\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"WS Client"),"\uff0c\u8bf7\u6ce8\u610f\u533a\u5206\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5404\u5f15\u64ce\u5b9e\u73b0\u7684\u9650\u5236\u53ef\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#limitations"},"Ktor\u6587\u6863"),"\u3002")),(0,o.kt)("p",null,"\u4f8b\u5982\uff1a"),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,o.kt)("p",null,"\u5982\u679c\u6ca1\u6709\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff0c\u5219\u4e3b\u52a8\u5206\u914d\u5e73\u53f0\u540e\u7f00\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio-jvm:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-groovy"},"// \u6216\u4f7f\u7528 runtimeOnly\nimplementation 'io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>'\n")),(0,o.kt)("p",null,"\u5982\u679c\u6ca1\u6709\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff0c\u5219\u4e3b\u52a8\u5206\u914d\u5e73\u53f0\u540e\u7f00\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},"// \u6216\u4f7f\u7528 runtimeOnly\nimplementation 'io.ktor:ktor-client-cio-jvm:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>'\n")),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-groovy"},"// \u6216\u4f7f\u7528 runtimeOnly\nimplementation 'io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>'\n"))),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-cio-jvm\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-java\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")))),(0,o.kt)("h2",{id:"bot\u914d\u7f6e"},"BOT\u914d\u7f6e"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u5728\u9879\u76ee",(0,o.kt)("strong",{parentName:"p"},"\u8d44\u6e90\u6587\u4ef6"),"\u76ee\u5f55\u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot-bots")," \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u914d\u7f6ebot\u7684\u914d\u7f6e\u6587\u4ef6 ",(0,o.kt)("inlineCode",{parentName:"p"},"xxx.bot.json")," ( \u6587\u4ef6\u540d\u968f\u610f\uff0c\u6269\u5c55\u540d\u5e94\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},".bot")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},".bot.json")," ) \u3002"),(0,o.kt)("p",null,"\u914d\u7f6e\u6587\u4ef6\u7684\u5177\u4f53\u5185\u5bb9\u5219\u53c2\u8003\u7ae0\u8282 ",(0,o.kt)("a",{parentName:"p",href:"../bot-config"},(0,o.kt)("strong",{parentName:"a"},"BOT\u914d\u7f6e\u6587\u4ef6"))," \u3002"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"\u6b64\u8def\u5f84\u4ee5 IDEA \u7684\u9879\u76ee\u7ed3\u6784\u98ce\u683c\u4e3a\u51c6\uff0c\u5982\u679c\u662f\u5176\u4ed6IDE\uff0c\u4f7f\u7528\u5bf9\u5e94\u7684\u8d44\u6e90\u6587\u4ef6\u76ee\u5f55\u3002")),(0,o.kt)("pre",{parentName:"blockquote"},(0,o.kt)("code",{parentName:"pre"},"${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json\n"))),(0,o.kt)("admonition",{title:"\u53ef\u914d\u7f6e",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u60f3\u8981\u4fee\u6539\u6b64\u8def\u5f84\uff0c\u53ef\u5728 Spring Boot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u8fdb\u884c\u914d\u7f6e\uff1a"),(0,o.kt)(r.Z,{groupId:"spring-boot-config",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"properties",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-properties"},"# \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n# \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n# \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\nsimbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot*\n"))),(0,o.kt)(i.Z,{value:"YAML",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"simbot:\n # \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n # \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n # \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\n bot-configuration-resources:\n - 'classpath:simbot-bots/*.bot*'\n"))))),(0,o.kt)("h2",{id:"\u542f\u52a8\u7c7b"},"\u542f\u52a8\u7c7b"),(0,o.kt)("p",null,"\u50cf\u6bcf\u4e00\u4e2a Spring Boot \u5e94\u7528\u4e00\u6837\uff0c\u4f60\u9700\u8981\u4e00\u4e2a\u542f\u52a8\u7c7b\uff0c\u5e76\u901a\u8fc7\u6807\u6ce8 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u6765\u542f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot")," \uff1a"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.App.kt'",title:"'com.example.App.kt'"},"@EnableSimbot\n@SpringBootApplication\nclass App\n\nfun main(vararg args: String) {\n runApplication(args = args)\n}\n"))),(0,o.kt)(i.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u65e9\u6709\u9884\u9632",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u4f60\u5728Java\u4e2d\u9047\u5230\u4e86\u65e0\u6cd5\u5f15\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u7b49\u60c5\u51b5\uff0c\u6216\u8bb8\u53ef\u4ee5\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/faq/%E5%8C%85%E5%BC%95%E7%94%A8%E5%BC%82%E5%B8%B8/"},(0,o.kt)("strong",{parentName:"a"},"\u8fd9\u7bc7FAQ")),"\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.App.java'",title:"'com.example.App.java'"},"@EnableSimbot\n@SpringBootApplication\npublic class App {\n public static void main(String[] args) {\n SpringApplication.run(App.class, args);\n }\n}\n")))),(0,o.kt)("h2",{id:"\u76d1\u542c\u4e8b\u4ef6"},"\u76d1\u542c\u4e8b\u4ef6"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\u5c31\u662f\u903b\u8f91\u4ee3\u7801\u6240\u5728\u7684\u5730\u65b9\u4e86\uff0c\u7f16\u5199\u4e00\u4e2a\u76d1\u542c\u51fd\u6570\u5e76\u76d1\u542c\u4e00\u4e2a\u4e8b\u4ef6\u3002"),(0,o.kt)("p",null,"\u6b64\u5904\u6211\u4eec\u76d1\u542c ",(0,o.kt)("inlineCode",{parentName:"p"},"ChannelMessageEvent"),"\uff0c\u4e5f\u5c31\u662f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"\u5b50\u9891\u9053\u7684\u6d88\u606f\u4e8b\u4ef6")),"\u3002"),(0,o.kt)("p",null,"\u5047\u8bbe\uff1a\u8981\u6c42bot\u5fc5\u987b",(0,o.kt)("strong",{parentName:"p"},"\u88abAT"),"\uff0c\u5e76\u4e14\u8bf4\u4e00\u53e5 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u597d"),"\uff0c\u6b64\u65f6bot\u4f1a",(0,o.kt)("strong",{parentName:"p"},"\u5f15\u7528"),"\u7528\u6237\u53d1\u9001\u7684\u6d88\u606f\u5e76\u56de\u590d ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u4e5f\u597d!")," \uff0c\u7c7b\u4f3c\u4e8e\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"\u7528\u6237: \n@BOT \u4f60\u597d\n\nBOT:\n> \u7528\u6237: @BOT \u4f60\u597d\n\u4f60\u4e5f\u597d! \n")),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.listener.ExampleListener.kt'",title:"'com.example.listener.ExampleListener.kt'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n\n@Component\nclass ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n suspend fun onChannelMessage(event: ChannelMessageEvent) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n event.reply("\u4f60\u4e5f\u597d!")\n }\n}\n\n\n'))),(0,o.kt)(i.Z,{value:"Java",label:"Java Blocking",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public void onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n // Java\u4e2d\u7684\u963b\u585e\u5f0fAPI\n event.replyBlocking("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n // \u5c06 CompletableFuture \u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return event.replyAsync("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Reactive",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u6709\u8981\u6c42",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u8fd4\u56de\u503c\u662f\u9700\u8981\u7b2c\u4e09\u65b9\u5e93\u7684\u54cd\u5e94\u5f0f\u7c7b\u578b\uff0c\u90a3\u4e48\u4f60\u7684\u9879\u76ee\u73af\u5883\u4f9d\u8d56\u4e2d\u5fc5\u987b\u5b58\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Kotlin courotines")," \u5bf9\u5176\u7684\u652f\u6301\u5e93\u624d\u53ef\u4f7f\u7528\u3002\n\u4f60\u53ef\u4ee5\u53c2\u8003simbot\u6587\u6863: ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/basic/event-listener#%E5%8F%AF%E5%93%8D%E5%BA%94%E5%BC%8F%E7%9A%84%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%9C"},"\u54cd\u5e94\u5f0f\u7684\u5904\u7406\u7ed3\u679c")," \u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public Mono onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n // \u5c06 Mono \u7b49\u54cd\u5e94\u5f0f\u7c7b\u578b\u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return Mono.fromCompletionStage(event.replyAsync("\u4f60\u4e5f\u597d!"));\n }\n \n}\n')))),(0,o.kt)("h2",{id:"\u542f\u52a8"},"\u542f\u52a8"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u542f\u52a8\u7a0b\u5e8f\u5e76\u5728\u4f60\u7684\u6c99\u7bb1\u9891\u9053\u4e2d@\u5b83\u8bd5\u8bd5\u770b\u5427\u3002"),(0,o.kt)("p",null,"\u5f53\u7136\uff0c\u5982\u679c\u9047\u5230\u4e86\u9884\u671f\u5916\u7684\u95ee\u9898\u4e5f\u4e0d\u8981\u614c\uff0c\u79ef\u6781\u53cd\u9988\u95ee\u9898\u624d\u80fd\u4f7f\u6211\u4eec\u53d8\u5f97\u66f4\u597d\uff0c\u53ef\u4ee5\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot/issues"},"Issues")," \u53cd\u9988\u95ee\u9898\u3001",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u95ee\u3002"),(0,o.kt)("h2",{id:"\u66f4\u591a"},"\u66f4\u591a"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love"},"simbot3\u5b98\u7f51")," \u6765\u4e86\u89e3simbot3\u7684\u5404",(0,o.kt)("strong",{parentName:"p"},"\u901a\u7528\u80fd\u529b"),"\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love"},"API\u6587\u6863")," \u6216\u901a\u8fc7\u6e90\u7801\u7ffb\u9605\u3001\u641c\u7d22\u5e76\u4e86\u89e3\u5177\u4f53\u7684\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u60d1\u3002"),(0,o.kt)("p",null,"\u6700\u7ec8\uff0c\u672c\u624b\u518c\u7f51\u7ad9\u53ef\u80fd\u4f1a\u65f6\u4e0d\u65f6\u7684\u66f4\u65b0\u4e00\u4e9b\u5b9e\u7528\u6027\u7684\u5e94\u7528\u6587\u6863\u3002"),(0,o.kt)("admonition",{title:"\u7cbe\u529b\u6709\u9650 ",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u7f16\u5199\u4f7f\u7528\u624b\u518c\u662f\u6781\u5176\u6d88\u8017\u7cbe\u529b\u7684\u4e8b\u60c5\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4f1a\u9996\u5148\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"\u6e90\u7801\u7684\u6587\u6863\u6ce8\u91ca"),"\u7684\u5168\u9762\u6027\uff0c\u540c\u65f6\u7531\u6b64\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"API\u6587\u6863"),"\u7684\u8bf4\u660e\u59cb\u7ec8\u662f\u7d27\u968f\u6e90\u7801\u751f\u6210\u800c\u5b8c\u6574\u7684\u3002\uff08API\u6587\u6863\u4f1a\u968f\u7740\u7248\u672c\u7684\u53d1\u5e03\u81ea\u52a8\u90e8\u7f72\uff09"),(0,o.kt)("p",{parentName:"admonition"},"\u5176\u6b21\uff0c\u6211\u4eec\u4f1a\u5c3d\u53ef\u80fd\u7684\u53ca\u65f6\u5e76\u5168\u9762\u7684\u56de\u590d",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},(0,o.kt)("strong",{parentName:"a"},"\u793e\u533a")),"\u4e2d\u7684\u76f8\u5173\u7591\u60d1\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6700\u7ec8\uff0c\u6211\u4eec\u624d\u4f1a\u8003\u8651\u5b8c\u5584\u672c\u624b\u518c\u7f51\u7ad9\u3002")))}g.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file diff --git a/assets/js/36eca64c.fe42a823.js b/assets/js/36eca64c.3a381028.js similarity index 99% rename from assets/js/36eca64c.fe42a823.js rename to assets/js/36eca64c.3a381028.js index d2e011f0..79d7ccff 100644 --- a/assets/js/36eca64c.fe42a823.js +++ b/assets/js/36eca64c.3a381028.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[274],{5162:(t,n,e)=>{e.d(n,{Z:()=>i});var a=e(7294),o=e(6010);const r={tabItem:"tabItem_Ymn6"};function i(t){let{children:n,hidden:e,className:i}=t;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:e},n)}},4866:(t,n,e)=>{e.d(n,{Z:()=>w});var a=e(7462),o=e(7294),r=e(6010),i=e(2466),l=e(6550),s=e(1980),u=e(7392),p=e(12);function c(t){return function(t){return o.Children.map(t,(t=>{if(!t||(0,o.isValidElement)(t)&&function(t){const{props:n}=t;return!!n&&"object"==typeof n&&"value"in n}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:n,label:e,attributes:a,default:o}}=t;return{value:n,label:e,attributes:a,default:o}}))}function m(t){const{values:n,children:e}=t;return(0,o.useMemo)((()=>{const t=n??c(e);return function(t){const n=(0,u.l)(t,((t,n)=>t.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[n,e])}function b(t){let{value:n,tabValues:e}=t;return e.some((t=>t.value===n))}function k(t){let{queryString:n=!1,groupId:e}=t;const a=(0,l.k6)(),r=function(t){let{queryString:n=!1,groupId:e}=t;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!e)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return e??null}({queryString:n,groupId:e});return[(0,s._X)(r),(0,o.useCallback)((t=>{if(!r)return;const n=new URLSearchParams(a.location.search);n.set(r,t),a.replace({...a.location,search:n.toString()})}),[r,a])]}function d(t){const{defaultValue:n,queryString:e=!1,groupId:a}=t,r=m(t),[i,l]=(0,o.useState)((()=>function(t){let{defaultValue:n,tabValues:e}=t;if(0===e.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!b({value:n,tabValues:e}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${e.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=e.find((t=>t.default))??e[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[s,u]=k({queryString:e,groupId:a}),[c,d]=function(t){let{groupId:n}=t;const e=function(t){return t?`docusaurus.tab.${t}`:null}(n),[a,r]=(0,p.Nk)(e);return[a,(0,o.useCallback)((t=>{e&&r.set(t)}),[e,r])]}({groupId:a}),v=(()=>{const t=s??c;return b({value:t,tabValues:r})?t:null})();(0,o.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,o.useCallback)((t=>{if(!b({value:t,tabValues:r}))throw new Error(`Can't select invalid tab value=${t}`);l(t),u(t),d(t)}),[u,d,r]),tabValues:r}}var v=e(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function T(t){let{className:n,block:e,selectedValue:l,selectValue:s,tabValues:u}=t;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),m=t=>{const n=t.currentTarget,e=p.indexOf(n),a=u[e].value;a!==l&&(c(n),s(a))},b=t=>{let n=null;switch(t.key){case"Enter":m(t);break;case"ArrowRight":{const e=p.indexOf(t.currentTarget)+1;n=p[e]??p[0];break}case"ArrowLeft":{const e=p.indexOf(t.currentTarget)-1;n=p[e]??p[p.length-1];break}}n?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":e},n)},u.map((t=>{let{value:n,label:e,attributes:i}=t;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,key:n,ref:t=>p.push(t),onKeyDown:b,onClick:m},i,{className:(0,r.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":l===n})}),e??n)})))}function N(t){let{lazy:n,children:e,selectedValue:a}=t;const r=(Array.isArray(e)?e:[e]).filter(Boolean);if(n){const t=r.find((t=>t.props.value===a));return t?(0,o.cloneElement)(t,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map(((t,n)=>(0,o.cloneElement)(t,{key:n,hidden:t.props.value!==a}))))}function y(t){const n=d(t);return o.createElement("div",{className:(0,r.Z)("tabs-container",g.tabList)},o.createElement(T,(0,a.Z)({},t,n)),o.createElement(N,(0,a.Z)({},t,n)))}function w(t){const n=(0,v.Z)();return o.createElement(y,(0,a.Z)({key:String(n)},t))}},3469:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>m,contentTitle:()=>p,default:()=>v,frontMatter:()=>u,metadata:()=>c,toc:()=>b});var a=e(7462),o=(e(7294),e(3905)),r=e(4866),i=e(5162),l=e(614),s=e(2965);const u={title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},p=void 0,c={unversionedId:"quick-start/stdlib",id:"quick-start/stdlib",title:"\u4f7f\u7528\u6807\u51c6\u5e93",description:"stdlib\u6807\u51c6\u5e93\u6a21\u5757\u57fa\u4e8e KMP \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 JVM\u3001JS\u3001Native \u5e73\u53f0\uff0c\u4f7f\u7528 Ktor \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u548c\u4e8b\u4ef6\u8ba2\u9605\uff08WS\u8fde\u63a5\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002",source:"@site/docs/quick-start/stdlib.md",sourceDirName:"quick-start",slug:"/quick-start/stdlib",permalink:"/docs/quick-start/stdlib",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/stdlib.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:2,frontMatter:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528API",permalink:"/docs/quick-start/api"},next:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/quick-start/simbot-core"}},m={},b=[{value:"\u5b89\u88c5",id:"\u5b89\u88c5",level:2},{value:"\u4f7f\u7528",id:"\u4f7f\u7528",level:2},{value:"\u6784\u5efaBOT\u3001\u8ba2\u9605\u4e8b\u4ef6",id:"\u6784\u5efabot\u8ba2\u9605\u4e8b\u4ef6",level:3},{value:"\u4f7f\u7528BOT\u8bf7\u6c42API",id:"\u4f7f\u7528bot\u8bf7\u6c42api",level:3}],k={toc:b},d="wrapper";function v(t){let{components:n,...e}=t;return(0,o.kt)(d,(0,a.Z)({},k,e,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"stdlib\u6807\u51c6\u5e93\u6a21\u5757\u57fa\u4e8e ",(0,o.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,o.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,o.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u548c\u4e8b\u4ef6\u8ba2\u9605\uff08WS\u8fde\u63a5\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002"),(0,o.kt)("p",null,"\u6807\u51c6\u5e93\u6a21\u5757\u662f",(0,o.kt)("strong",{parentName:"p"},"\u72ec\u7acb\u7684"),"\uff0c\u5b9e\u8d28\u4e0a\u5e76\u4e0d\u4f9d\u8d56 simbot API\u3002\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/"},"KOOK API")," \u4e0e\u4e8b\u4ef6\u8ba2\u9605\u80fd\u529b\u7684\u5e95\u5c42\u5c01\u88c5\u5e93\u3002"),(0,o.kt)("p",null,"\u6807\u51c6\u5e93\u6a21\u5757\u4f9d\u8d56API\u6a21\u5757\u3002"),(0,o.kt)("h2",{id:"\u5b89\u88c5"},"\u5b89\u88c5"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"1. \u5b89\u88c5 kook-stdlib \u4f9d\u8d56")),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},'\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\nkotlin("jvm") version "\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c"\n// \u6216 multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n// \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n'.trim()),(0,o.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\nimplementation("love.forte.simbot.component:simbot-component-kook-stdlib:${s.i}") // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,o.kt)(i.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},"\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\nid 'org.jetbrains.kotlin.jvm' version '\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c'\n// \u6216 org.jetbrains.kotlin.multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n// \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n".trim()),(0,o.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\nimplementation 'love.forte.simbot.component:simbot-component-kook-stdlib:${s.i}' // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\n love.forte.simbot.component\n \x3c!-- \u5728Maven\u4e2d\u4f7f\u7528 '-jvm' \u540e\u7f00\u6765\u9009\u62e9\u4f7f\u7528JVM\u5e73\u53f0\u5e93 --\x3e\n simbot-component-kook-stdlib-jvm\n \x3c!-- \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases --\x3e\n ${s.i}\n\n`.trim()))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2. \u9009\u62e9\u5e76\u5b89\u88c5\u5408\u9002\u7684 Ktor Client \u4f9d\u8d56")),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html"},"Ktor: HTTP client Engines")," \u9009\u62e9\u5e76\u4f7f\u7528\u4e00\u4e2a\u5408\u9002\u7684 HTTP Client \u5f15\u64ce\u3002"),(0,o.kt)("admonition",{title:"\u9650\u5236\u6761\u4ef6",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f:")," \u4f60\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"HTTP 1.1"),"\u548c",(0,o.kt)("strong",{parentName:"p"},"WS Client"),"\u7684\u5f15\u64ce\u3002\u90e8\u5206\u5f15\u64ce\u53ef\u80fd\u4e0d\u652f\u6301WS Client\uff0c\u8bf7\u6ce8\u610f\u533a\u5206\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5404\u5f15\u64ce\u5b9e\u73b0\u7684\u9650\u5236\u53ef\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#limitations"},"Ktor\u6587\u6863"),"\u3002")),(0,o.kt)("p",null,"\u4f8b\u5982\uff1a"),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",label:"Kotlin/JVM",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Kotlin/JS",label:"Kotlin/JS",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#js"},(0,o.kt)("inlineCode",{parentName:"a"},"JS"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-js:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Kotlin/N",label:"Kotlin/Native",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)(r.Z,{groupId:"use-dependency-kt-native",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"WinHttp",label:"WinHttp",mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"see ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#winhttp"},(0,o.kt)("inlineCode",{parentName:"a"},"WinHttp")))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-winhttp:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Darwin",label:"Darwin",mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"see ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#darwin"},(0,o.kt)("inlineCode",{parentName:"a"},"Darwin")))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-darwin:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"CIO",label:"CIO",mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"see ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO")))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))))),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-cio-jvm\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-java\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")))),(0,o.kt)("h2",{id:"\u4f7f\u7528"},"\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u6784\u5efabot\u8ba2\u9605\u4e8b\u4ef6"},"\u6784\u5efaBOT\u3001\u8ba2\u9605\u4e8b\u4ef6"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",label:"Kotlin/JVM",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efa\u4e00\u4e2a bot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // JVM\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u5219\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u52a0\u8f7d\u73af\u5883\u4e2d\u53ef\u80fd\u5b58\u5728\u7684\u5f15\u64ce\n clientEngineFactory = CIO\n wsEngineFactory = CIO\n\n // \u662f\u5426\u542f\u7528 compress, \u9ed8\u8ba4\u4e3atrue\n isCompress = true\n\n // \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\n disableTimeout()\n\n // \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\n timeout {\n requestTimeoutMillis = 5000L\n connectTimeoutMillis = 5000L\n }\n\n // \u4ee5\u53ca\u5176\u4ed6...\n}\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.processor { raw ->\n // this: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.processor(Event.Type.KMARKDOWN) { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("type: $type")\n println("raw: $raw")\n}\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nval me = bot.me()\nprintln("me: $me")\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\n// \u9700\u8981\u786e\u4fddruntime\u73af\u5883\u4e2d\u6709\u53ef\u7528\u7684ktor\u5f15\u64ce\uff0c\u4e14\u540c\u65f6\u652f\u6301HTTP\u548cws client\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN"))\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n'))),(0,o.kt)(i.Z,{value:"Kotlin/JS",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efa\u4e00\u4e2a bot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // JS\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4f1a\u4f9d\u8d56ktor-js\uff08\u56e0\u4e3ajs\u5e73\u53f0\u4f3c\u4e4e\u6ca1\u522b\u7684\u53ef\u9009\uff09\uff0c\u56e0\u6b64\u6b64\u5904\u53ef\u4ee5\u7701\u7565\n clientEngineFactory = Js\n wsEngineFactory = Js\n\n // \u662f\u5426\u542f\u7528 compress\n // JS \u5e73\u53f0\u4e0b\u9ed8\u8ba4\u4e3a **false**\n // JS \u5e73\u53f0\u652f\u6301\u5f00\u542f compress, \u4f46\u662f\u53ef\u80fd\u4e0d\u591f\u7a33\u5b9a\uff0c\u56e0\u6b64\u5982\u679c\u975e\u5fc5\u8981\uff0c\u53ef\u4ee5\u4e0d\u7528\u5f00\u542f\u3002\n isCompress = false\n\n // \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\n disableTimeout()\n\n // \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\n timeout {\n requestTimeoutMillis = 5000L\n connectTimeoutMillis = 5000L\n }\n\n // \u4ee5\u53ca\u5176\u4ed6...\n}\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.processor { raw ->\n // this: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.processor(Event.Type.KMARKDOWN) { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("type: $type")\n println("raw: $raw")\n}\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nval me = bot.me()\nprintln("me: $me")\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN"))\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n'))),(0,o.kt)(i.Z,{value:"Kotlin/Native",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"\u6b64\u5904\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"p"},"MingwX64")," \u5e73\u53f0\u73af\u5883\u4e3a\u4f8b\uff1a")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efa\u4e00\u4e2a bot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // \u4e0d\u540c\u7684native\u5e73\u53f0\u8bf7\u6ce8\u610f\u9009\u62e9\u5408\u9002\u7684\u5f15\u64ce\n clientEngineFactory = WinHttp\n wsEngineFactory = WinHttp\n\n // \u662f\u5426\u542f\u7528 compress\n // native \u5e73\u53f0\u4e0b\u9ed8\u8ba4\u4e3a **false**, \u4e14 **\u4e0d\u652f\u6301** \u5f00\u542f\u3002\n // isCompress = false\n\n // \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\n disableTimeout()\n\n // \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\n timeout {\n requestTimeoutMillis = 5000L\n connectTimeoutMillis = 5000L\n }\n\n // \u4ee5\u53ca\u5176\u4ed6...\n}\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.processor { raw ->\n // this: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.processor(Event.Type.KMARKDOWN) { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("type: $type")\n println("raw: $raw")\n}\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nval me = bot.me()\nprintln("me: $me")\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // \u4e0d\u540c\u7684native\u5e73\u53f0\u8bf7\u6ce8\u610f\u9009\u62e9\u5408\u9002\u7684\u5f15\u64ce\n clientEngineFactory = WinHttp\n wsEngineFactory = WinHttp\n}\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n'))),(0,o.kt)(i.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u51c6\u5907bot\u914d\u7f6e\nfinal var botConfiguration = new BotConfiguration();\n// bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n\n// \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n// JVM\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u5219\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u52a0\u8f7d\u73af\u5883\u4e2d\u53ef\u80fd\u5b58\u5728\u7684\u5f15\u64ce\nbotConfiguration.setClientEngineFactory(CIO.INSTANCE);\nbotConfiguration.setWsEngineFactory(CIO.INSTANCE);\n\n// \u662f\u5426\u542f\u7528 compress, \u9ed8\u8ba4\u4e3atrue\nbotConfiguration.setCompress(true);\n\n// \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\nbotConfiguration.disableTimeout();\n\n// \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\nfinal var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration();\ntimeoutConfiguration.setRequestTimeoutMillis(5000L);\ntimeoutConfiguration.setConnectTimeoutMillis(5000L);\nbotConfiguration.setTimeout(timeoutConfiguration);\n\n// \u4ee5\u53ca\u5176\u4ed6...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration \u4e5f\u53ef\u7701\u7565\uff0c\u5982\u679c\u90fd\u7528\u9ed8\u8ba4\u7684\u8bdd\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.blockingProcessor((event, raw) -> {\n // event: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("raw = " + raw);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.blockingProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.blockingProcessor(Event.Type.KMARKDOWN, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getType() = " + event.getType());\n System.out.println("raw = " + raw);\n});\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nfinal var me = bot.getMe();\nSystem.out.println("me = " + me);\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startBlocking \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startBlocking();\n\n// bot.joinBlocking() \u4f1a\u963b\u585e\u5f53\u524d\u7ebf\u7a0b\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.joinBlocking();\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);// botConfiguration \u4e5f\u53ef\u7701\u7565\uff0c\u5982\u679c\u90fd\u7528\u9ed8\u8ba4\u7684\u8bdd\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.blockingProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n});\n\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startBlocking \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\nbot.startBlocking();\n\n// bot.joinBlocking() \u4f1a\u963b\u585e\u5f53\u524d\u7ebf\u7a0b\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.joinBlocking();\n'))),(0,o.kt)(i.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u51c6\u5907bot\u914d\u7f6e\nfinal var botConfiguration = new BotConfiguration();\n// bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n\n// \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n// JVM\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u5219\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u52a0\u8f7d\u73af\u5883\u4e2d\u53ef\u80fd\u5b58\u5728\u7684\u5f15\u64ce\nbotConfiguration.setClientEngineFactory(CIO.INSTANCE);\nbotConfiguration.setWsEngineFactory(CIO.INSTANCE);\n\n// \u662f\u5426\u542f\u7528 compress, \u9ed8\u8ba4\u4e3atrue\nbotConfiguration.setCompress(true);\n\n// \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\nbotConfiguration.disableTimeout();\n\n// \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\nfinal var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration();\ntimeoutConfiguration.setRequestTimeoutMillis(5000L);\ntimeoutConfiguration.setConnectTimeoutMillis(5000L);\nbotConfiguration.setTimeout(timeoutConfiguration);\n\n// \u4ee5\u53ca\u5176\u4ed6...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration \u4e5f\u53ef\u7701\u7565\uff0c\u5982\u679c\u90fd\u7528\u9ed8\u8ba4\u7684\u8bdd\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.asyncProcessor((event, raw) -> {\n // event: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("raw = " + raw);\n\n // \u26a0 \u4e0d\u8981\u5728\u4efb\u4f55\u5f02\u6b65\u51fd\u6570\u4f53\u4e2d\u8c03\u7528\u963b\u585eAPI\u3002\n // \u4f8b\u5982\uff1abot.getMe(), xxxBlocking\u7b49\u3002\n // \u4efb\u4f55\u6709 xxxAsync \u7b49\u4ef7\u66ff\u4ee3\u7684\u51fd\u6570\u90fd\u662f\u963b\u585e\u51fd\u6570\u3002\n \n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n return CompletableFuture.completedFuture(null);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.asyncProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n\n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n return CompletableFuture.completedFuture(null);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.asyncProcessor(Event.Type.KMARKDOWN, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getType() = " + event.getType());\n System.out.println("raw = " + raw);\n\n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n return CompletableFuture.completedFuture(null);\n});\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\n// \u5982\u679c\u6709\u9700\u8981\uff0c\u8bb0\u5f97\u5904\u7406\u5f02\u5e38\nbot.getMeAsync().thenAccept(me -> {\n // \u5f97\u5230\u7ed3\u679c\n System.out.println("me = " + me);\n});\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startAsync \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// \u5982\u679c\u6709\u9700\u8981\uff0c\u8bb0\u5f97\u5904\u7406\u5f02\u5e38\nbot.startAsync();\n\n// bot.asFuture() \u4f1a\u8f6c\u5316\u4e3a\u4e00\u4e2a\u6d3b\u8dc3\u7684 CompletableFuture\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.asFuture().whenComplete((unit, throwable) -> {\n System.out.println("Bot\u88ab\u7ec8\u6b62\u4e86\u3002");\n System.out.println("throwable: " + throwable);\n});\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.asyncProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n\n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n // \u26a0 \u4e0d\u8981\u5728\u4efb\u4f55\u5f02\u6b65\u51fd\u6570\u4f53\u4e2d\u8c03\u7528\u963b\u585eAPI\u3002\n // \u4f8b\u5982\uff1abot.getMe(), xxxBlocking\u7b49\u3002\n // \u4efb\u4f55\u6709 xxxAsync \u7b49\u4ef7\u66ff\u4ee3\u7684\u51fd\u6570\u90fd\u662f\u963b\u585e\u51fd\u6570\u3002\n return CompletableFuture.completedFuture(null);\n});\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startAsync \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.asFuture() \u4f1a\u8f6c\u5316\u4e3a\u4e00\u4e2a\u6d3b\u8dc3\u7684 CompletableFuture\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.startAsync().thenCompose(unit -> bot.asFuture()).whenComplete((unit, throwable) -> {\n System.out.println("Bot\u88ab\u7ec8\u6b62\u4e86\u3002");\n System.out.println("throwable: " + throwable);\n});\n')))),(0,o.kt)("h3",{id:"\u4f7f\u7528bot\u8bf7\u6c42api"},"\u4f7f\u7528BOT\u8bf7\u6c42API"),(0,o.kt)("p",null,"\u5728\u6807\u51c6\u5e93\u4e2d\uff0c\u6211\u4eec\u4e5f\u9488\u5bf9 ",(0,o.kt)("inlineCode",{parentName:"p"},"Bot")," \u63d0\u4f9b\u4e86\u4e00\u4e9b\u7528\u4e8e\u8bf7\u6c42API\u7684\u4fbf\u6377\u65b9\u6cd5\uff0c\u514d\u9664\u4f60\u6bcf\u6b21\u90fd\u9700\u8981\u63d0\u4f9b ",(0,o.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"authorization")," \u7684\u95ee\u9898\u3002"),(0,o.kt)("p",null,"\u4ee5",(0,o.kt)("strong",{parentName:"p"},"\u83b7\u53d6\u9891\u9053\u670d\u52a1\u5668\u5217\u8868API"),"\u4e3a\u4f8b\uff1a"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"\u7701\u7565\u914d\u7f6e\u8fc7\u7a0b\uff0cKotlin\u5404\u5e73\u53f0\u7684\u4f7f\u7528\u65b9\u5f0f\u662f\u4e00\u81f4\u7684\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565\n}\n\n// \u83b7\u53d6\u9891\u9053\u5217\u8868API\nval api = GetGuildListApi.create()\n\n// \u901a\u8fc7 bot \u8bf7\u6c42\nval dataList = api.requestBy(bot)\n\ndataList.forEach { println("guild: $it") }\n'))),(0,o.kt)(i.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi\nfinal var api = GetGuildListApi.create();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\nfinal var listData = api.requestByBlocking(bot);\n\nfor (SimpleGuild guild : listData) {\n System.out.println("guild = " + guild);\n}\n'))),(0,o.kt)(i.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi\nfinal var api = GetGuildListApi.create();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\napi.requestByAsync(bot).thenAccept(listData -> {\n for (SimpleGuild guild : listData) {\n System.out.println("guild = " + guild);\n }\n});\n')))))}v.isMDXComponent=!0},2965:t=>{t.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[274],{5162:(t,n,e)=>{e.d(n,{Z:()=>i});var a=e(7294),o=e(6010);const r={tabItem:"tabItem_Ymn6"};function i(t){let{children:n,hidden:e,className:i}=t;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:e},n)}},4866:(t,n,e)=>{e.d(n,{Z:()=>w});var a=e(7462),o=e(7294),r=e(6010),i=e(2466),l=e(6550),s=e(1980),u=e(7392),p=e(12);function c(t){return function(t){return o.Children.map(t,(t=>{if(!t||(0,o.isValidElement)(t)&&function(t){const{props:n}=t;return!!n&&"object"==typeof n&&"value"in n}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:n,label:e,attributes:a,default:o}}=t;return{value:n,label:e,attributes:a,default:o}}))}function m(t){const{values:n,children:e}=t;return(0,o.useMemo)((()=>{const t=n??c(e);return function(t){const n=(0,u.l)(t,((t,n)=>t.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[n,e])}function b(t){let{value:n,tabValues:e}=t;return e.some((t=>t.value===n))}function k(t){let{queryString:n=!1,groupId:e}=t;const a=(0,l.k6)(),r=function(t){let{queryString:n=!1,groupId:e}=t;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!e)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return e??null}({queryString:n,groupId:e});return[(0,s._X)(r),(0,o.useCallback)((t=>{if(!r)return;const n=new URLSearchParams(a.location.search);n.set(r,t),a.replace({...a.location,search:n.toString()})}),[r,a])]}function d(t){const{defaultValue:n,queryString:e=!1,groupId:a}=t,r=m(t),[i,l]=(0,o.useState)((()=>function(t){let{defaultValue:n,tabValues:e}=t;if(0===e.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!b({value:n,tabValues:e}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${e.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=e.find((t=>t.default))??e[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[s,u]=k({queryString:e,groupId:a}),[c,d]=function(t){let{groupId:n}=t;const e=function(t){return t?`docusaurus.tab.${t}`:null}(n),[a,r]=(0,p.Nk)(e);return[a,(0,o.useCallback)((t=>{e&&r.set(t)}),[e,r])]}({groupId:a}),v=(()=>{const t=s??c;return b({value:t,tabValues:r})?t:null})();(0,o.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,o.useCallback)((t=>{if(!b({value:t,tabValues:r}))throw new Error(`Can't select invalid tab value=${t}`);l(t),u(t),d(t)}),[u,d,r]),tabValues:r}}var v=e(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function T(t){let{className:n,block:e,selectedValue:l,selectValue:s,tabValues:u}=t;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),m=t=>{const n=t.currentTarget,e=p.indexOf(n),a=u[e].value;a!==l&&(c(n),s(a))},b=t=>{let n=null;switch(t.key){case"Enter":m(t);break;case"ArrowRight":{const e=p.indexOf(t.currentTarget)+1;n=p[e]??p[0];break}case"ArrowLeft":{const e=p.indexOf(t.currentTarget)-1;n=p[e]??p[p.length-1];break}}n?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":e},n)},u.map((t=>{let{value:n,label:e,attributes:i}=t;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,key:n,ref:t=>p.push(t),onKeyDown:b,onClick:m},i,{className:(0,r.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":l===n})}),e??n)})))}function N(t){let{lazy:n,children:e,selectedValue:a}=t;const r=(Array.isArray(e)?e:[e]).filter(Boolean);if(n){const t=r.find((t=>t.props.value===a));return t?(0,o.cloneElement)(t,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map(((t,n)=>(0,o.cloneElement)(t,{key:n,hidden:t.props.value!==a}))))}function y(t){const n=d(t);return o.createElement("div",{className:(0,r.Z)("tabs-container",g.tabList)},o.createElement(T,(0,a.Z)({},t,n)),o.createElement(N,(0,a.Z)({},t,n)))}function w(t){const n=(0,v.Z)();return o.createElement(y,(0,a.Z)({key:String(n)},t))}},3469:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>m,contentTitle:()=>p,default:()=>v,frontMatter:()=>u,metadata:()=>c,toc:()=>b});var a=e(7462),o=(e(7294),e(3905)),r=e(4866),i=e(5162),l=e(614),s=e(2965);const u={title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},p=void 0,c={unversionedId:"quick-start/stdlib",id:"quick-start/stdlib",title:"\u4f7f\u7528\u6807\u51c6\u5e93",description:"stdlib\u6807\u51c6\u5e93\u6a21\u5757\u57fa\u4e8e KMP \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 JVM\u3001JS\u3001Native \u5e73\u53f0\uff0c\u4f7f\u7528 Ktor \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u548c\u4e8b\u4ef6\u8ba2\u9605\uff08WS\u8fde\u63a5\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002",source:"@site/docs/quick-start/stdlib.md",sourceDirName:"quick-start",slug:"/quick-start/stdlib",permalink:"/docs/quick-start/stdlib",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/stdlib.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:2,frontMatter:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528API",permalink:"/docs/quick-start/api"},next:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/quick-start/simbot-core"}},m={},b=[{value:"\u5b89\u88c5",id:"\u5b89\u88c5",level:2},{value:"\u4f7f\u7528",id:"\u4f7f\u7528",level:2},{value:"\u6784\u5efaBOT\u3001\u8ba2\u9605\u4e8b\u4ef6",id:"\u6784\u5efabot\u8ba2\u9605\u4e8b\u4ef6",level:3},{value:"\u4f7f\u7528BOT\u8bf7\u6c42API",id:"\u4f7f\u7528bot\u8bf7\u6c42api",level:3}],k={toc:b},d="wrapper";function v(t){let{components:n,...e}=t;return(0,o.kt)(d,(0,a.Z)({},k,e,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"stdlib\u6807\u51c6\u5e93\u6a21\u5757\u57fa\u4e8e ",(0,o.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,o.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,o.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u548c\u4e8b\u4ef6\u8ba2\u9605\uff08WS\u8fde\u63a5\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002"),(0,o.kt)("p",null,"\u6807\u51c6\u5e93\u6a21\u5757\u662f",(0,o.kt)("strong",{parentName:"p"},"\u72ec\u7acb\u7684"),"\uff0c\u5b9e\u8d28\u4e0a\u5e76\u4e0d\u4f9d\u8d56 simbot API\u3002\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/"},"KOOK API")," \u4e0e\u4e8b\u4ef6\u8ba2\u9605\u80fd\u529b\u7684\u5e95\u5c42\u5c01\u88c5\u5e93\u3002"),(0,o.kt)("p",null,"\u6807\u51c6\u5e93\u6a21\u5757\u4f9d\u8d56API\u6a21\u5757\u3002"),(0,o.kt)("h2",{id:"\u5b89\u88c5"},"\u5b89\u88c5"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"1. \u5b89\u88c5 kook-stdlib \u4f9d\u8d56")),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},'\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\nkotlin("jvm") version "\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c"\n// \u6216 multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n// \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n'.trim()),(0,o.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\nimplementation("love.forte.simbot.component:simbot-component-kook-stdlib:${s.i}") // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,o.kt)(i.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,o.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},"\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\nid 'org.jetbrains.kotlin.jvm' version '\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c'\n// \u6216 org.jetbrains.kotlin.multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n// \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n".trim()),(0,o.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\nimplementation 'love.forte.simbot.component:simbot-component-kook-stdlib:${s.i}' // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\n love.forte.simbot.component\n \x3c!-- \u5728Maven\u4e2d\u4f7f\u7528 '-jvm' \u540e\u7f00\u6765\u9009\u62e9\u4f7f\u7528JVM\u5e73\u53f0\u5e93 --\x3e\n simbot-component-kook-stdlib-jvm\n \x3c!-- \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases --\x3e\n ${s.i}\n\n`.trim()))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2. \u9009\u62e9\u5e76\u5b89\u88c5\u5408\u9002\u7684 Ktor Client \u4f9d\u8d56")),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html"},"Ktor: HTTP client Engines")," \u9009\u62e9\u5e76\u4f7f\u7528\u4e00\u4e2a\u5408\u9002\u7684 HTTP Client \u5f15\u64ce\u3002"),(0,o.kt)("admonition",{title:"\u9650\u5236\u6761\u4ef6",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f:")," \u4f60\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"HTTP 1.1"),"\u548c",(0,o.kt)("strong",{parentName:"p"},"WS Client"),"\u7684\u5f15\u64ce\u3002\u90e8\u5206\u5f15\u64ce\u53ef\u80fd\u4e0d\u652f\u6301WS Client\uff0c\u8bf7\u6ce8\u610f\u533a\u5206\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u5404\u5f15\u64ce\u5b9e\u73b0\u7684\u9650\u5236\u53ef\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#limitations"},"Ktor\u6587\u6863"),"\u3002")),(0,o.kt)("p",null,"\u4f8b\u5982\uff1a"),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",label:"Kotlin/JVM",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Kotlin/JS",label:"Kotlin/JS",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#js"},(0,o.kt)("inlineCode",{parentName:"a"},"JS"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-js:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Kotlin/N",label:"Kotlin/Native",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,o.kt)(r.Z,{groupId:"use-dependency-kt-native",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"WinHttp",label:"WinHttp",mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"see ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#winhttp"},(0,o.kt)("inlineCode",{parentName:"a"},"WinHttp")))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-winhttp:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"Darwin",label:"Darwin",mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"see ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#darwin"},(0,o.kt)("inlineCode",{parentName:"a"},"Darwin")))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-darwin:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,o.kt)(i.Z,{value:"CIO",label:"CIO",mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"see ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO")))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))))),(0,o.kt)(i.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,o.kt)("p",null,"\u4ee5 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,o.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-cio-jvm\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")),(0,o.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,o.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,o.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-java\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")))),(0,o.kt)("h2",{id:"\u4f7f\u7528"},"\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u6784\u5efabot\u8ba2\u9605\u4e8b\u4ef6"},"\u6784\u5efaBOT\u3001\u8ba2\u9605\u4e8b\u4ef6"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",label:"Kotlin/JVM",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efa\u4e00\u4e2a bot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // JVM\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u5219\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u52a0\u8f7d\u73af\u5883\u4e2d\u53ef\u80fd\u5b58\u5728\u7684\u5f15\u64ce\n clientEngineFactory = CIO\n wsEngineFactory = CIO\n\n // \u662f\u5426\u542f\u7528 compress, \u9ed8\u8ba4\u4e3atrue\n isCompress = true\n\n // \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\n disableTimeout()\n\n // \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\n timeout {\n requestTimeoutMillis = 5000L\n connectTimeoutMillis = 5000L\n }\n\n // \u4ee5\u53ca\u5176\u4ed6...\n}\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.processor { raw ->\n // this: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.processor(Event.Type.KMARKDOWN) { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("type: $type")\n println("raw: $raw")\n}\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nval me = bot.me()\nprintln("me: $me")\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\n// \u9700\u8981\u786e\u4fddruntime\u73af\u5883\u4e2d\u6709\u53ef\u7528\u7684ktor\u5f15\u64ce\uff0c\u4e14\u540c\u65f6\u652f\u6301HTTP\u548cws client\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN"))\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n'))),(0,o.kt)(i.Z,{value:"Kotlin/JS",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efa\u4e00\u4e2a bot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // JS\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4f1a\u4f9d\u8d56ktor-js\uff08\u56e0\u4e3ajs\u5e73\u53f0\u4f3c\u4e4e\u6ca1\u522b\u7684\u53ef\u9009\uff09\uff0c\u56e0\u6b64\u6b64\u5904\u53ef\u4ee5\u7701\u7565\n clientEngineFactory = Js\n wsEngineFactory = Js\n\n // \u662f\u5426\u542f\u7528 compress\n // JS \u5e73\u53f0\u4e0b\u9ed8\u8ba4\u4e3a **false**\n // JS \u5e73\u53f0\u652f\u6301\u5f00\u542f compress, \u4f46\u662f\u53ef\u80fd\u4e0d\u591f\u7a33\u5b9a\uff0c\u56e0\u6b64\u5982\u679c\u975e\u5fc5\u8981\uff0c\u53ef\u4ee5\u4e0d\u7528\u5f00\u542f\u3002\n isCompress = false\n\n // \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\n disableTimeout()\n\n // \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\n timeout {\n requestTimeoutMillis = 5000L\n connectTimeoutMillis = 5000L\n }\n\n // \u4ee5\u53ca\u5176\u4ed6...\n}\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.processor { raw ->\n // this: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.processor(Event.Type.KMARKDOWN) { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("type: $type")\n println("raw: $raw")\n}\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nval me = bot.me()\nprintln("me: $me")\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN"))\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n'))),(0,o.kt)(i.Z,{value:"Kotlin/Native",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"\u6b64\u5904\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"p"},"MingwX64")," \u5e73\u53f0\u73af\u5883\u4e3a\u4f8b\uff1a")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efa\u4e00\u4e2a bot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // \u4e0d\u540c\u7684native\u5e73\u53f0\u8bf7\u6ce8\u610f\u9009\u62e9\u5408\u9002\u7684\u5f15\u64ce\n clientEngineFactory = WinHttp\n wsEngineFactory = WinHttp\n\n // \u662f\u5426\u542f\u7528 compress\n // native \u5e73\u53f0\u4e0b\u9ed8\u8ba4\u4e3a **false**, \u4e14 **\u4e0d\u652f\u6301** \u5f00\u542f\u3002\n // isCompress = false\n\n // \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\n disableTimeout()\n\n // \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\n timeout {\n requestTimeoutMillis = 5000L\n connectTimeoutMillis = 5000L\n }\n\n // \u4ee5\u53ca\u5176\u4ed6...\n}\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.processor { raw ->\n // this: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.processor(Event.Type.KMARKDOWN) { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("type: $type")\n println("raw: $raw")\n}\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nval me = bot.me()\nprintln("me: $me")\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n // \u4e0d\u540c\u7684native\u5e73\u53f0\u8bf7\u6ce8\u610f\u9009\u62e9\u5408\u9002\u7684\u5f15\u64ce\n clientEngineFactory = WinHttp\n wsEngineFactory = WinHttp\n}\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.processor { raw ->\n // this: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n println("event: $this")\n println("extra: $extra")\n println("raw: $raw")\n}\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 start \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.join() \u4f1a\u6302\u8d77\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startAndJoin()\n'))),(0,o.kt)(i.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u51c6\u5907bot\u914d\u7f6e\nfinal var botConfiguration = new BotConfiguration();\n// bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n\n// \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n// JVM\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u5219\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u52a0\u8f7d\u73af\u5883\u4e2d\u53ef\u80fd\u5b58\u5728\u7684\u5f15\u64ce\nbotConfiguration.setClientEngineFactory(CIO.INSTANCE);\nbotConfiguration.setWsEngineFactory(CIO.INSTANCE);\n\n// \u662f\u5426\u542f\u7528 compress, \u9ed8\u8ba4\u4e3atrue\nbotConfiguration.setCompress(true);\n\n// \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\nbotConfiguration.disableTimeout();\n\n// \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\nfinal var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration();\ntimeoutConfiguration.setRequestTimeoutMillis(5000L);\ntimeoutConfiguration.setConnectTimeoutMillis(5000L);\nbotConfiguration.setTimeout(timeoutConfiguration);\n\n// \u4ee5\u53ca\u5176\u4ed6...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration \u4e5f\u53ef\u7701\u7565\uff0c\u5982\u679c\u90fd\u7528\u9ed8\u8ba4\u7684\u8bdd\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.blockingProcessor((event, raw) -> {\n // event: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("raw = " + raw);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.blockingProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.blockingProcessor(Event.Type.KMARKDOWN, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getType() = " + event.getType());\n System.out.println("raw = " + raw);\n});\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\nfinal var me = bot.getMe();\nSystem.out.println("me = " + me);\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startBlocking \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// startAndJoin() \u7ec4\u5408\u4e86 start() \u548c join()\nbot.startBlocking();\n\n// bot.joinBlocking() \u4f1a\u963b\u585e\u5f53\u524d\u7ebf\u7a0b\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.joinBlocking();\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);// botConfiguration \u4e5f\u53ef\u7701\u7565\uff0c\u5982\u679c\u90fd\u7528\u9ed8\u8ba4\u7684\u8bdd\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.blockingProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n});\n\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startBlocking \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\nbot.startBlocking();\n\n// bot.joinBlocking() \u4f1a\u963b\u585e\u5f53\u524d\u7ebf\u7a0b\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.joinBlocking();\n'))),(0,o.kt)(i.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u51c6\u5907bot\u914d\u7f6e\nfinal var botConfiguration = new BotConfiguration();\n// bot\u76f8\u5173\u7684\u914d\u7f6e, \u4f8b\u5982\uff1a\n\n// \u914d\u7f6ebot\u8fdb\u884cclient\u8bf7\u6c42\u548cws\u8fde\u63a5\u65f6\u4f7f\u7528\u7684Ktor\u5f15\u64ce\n// JVM\u5e73\u53f0\u4e0b\uff0c\u9ed8\u8ba4\u4e0d\u914d\u7f6e\u5219\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u52a0\u8f7d\u73af\u5883\u4e2d\u53ef\u80fd\u5b58\u5728\u7684\u5f15\u64ce\nbotConfiguration.setClientEngineFactory(CIO.INSTANCE);\nbotConfiguration.setWsEngineFactory(CIO.INSTANCE);\n\n// \u662f\u5426\u542f\u7528 compress, \u9ed8\u8ba4\u4e3atrue\nbotConfiguration.setCompress(true);\n\n// \u7981\u7528API\u8bf7\u6c42\u65f6\u7684\u8d85\u65f6\u914d\u7f6e\nbotConfiguration.disableTimeout();\n\n// \u6216\u8005\u81ea\u5b9a\u4e49\u8d85\u65f6\u914d\u7f6e\nfinal var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration();\ntimeoutConfiguration.setRequestTimeoutMillis(5000L);\ntimeoutConfiguration.setConnectTimeoutMillis(5000L);\nbotConfiguration.setTimeout(timeoutConfiguration);\n\n// \u4ee5\u53ca\u5176\u4ed6...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration \u4e5f\u53ef\u7701\u7565\uff0c\u5982\u679c\u90fd\u7528\u9ed8\u8ba4\u7684\u8bdd\n\n// \u6ce8\u518c\u4e8b\u4ef6\u5904\u7406\u5668\nbot.asyncProcessor((event, raw) -> {\n // event: Event<*>, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("raw = " + raw);\n\n // \u26a0 \u4e0d\u8981\u5728\u4efb\u4f55\u5f02\u6b65\u51fd\u6570\u4f53\u4e2d\u8c03\u7528\u963b\u585eAPI\u3002\n // \u4f8b\u5982\uff1abot.getMe(), xxxBlocking\u7b49\u3002\n // \u4efb\u4f55\u6709 xxxAsync \u7b49\u4ef7\u66ff\u4ee3\u7684\u51fd\u6570\u90fd\u662f\u963b\u585e\u51fd\u6570\u3002\n \n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n return CompletableFuture.completedFuture(null);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7684 extra \u8ba2\u9605\u4e00\u4e2a\u5177\u4f53\u7c7b\u578b\u7684\u4e8b\u4ef6\nbot.asyncProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n\n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n return CompletableFuture.completedFuture(null);\n});\n\n// \u4e5f\u53ef\u4ee5\u6839\u636e\u4e8b\u4ef6\u7c7b\u578b Event.Type \u7684\u67d0\u4e2a\u503c\u8ba2\u9605\u4e0e\u4e4b\u5339\u914d\u7684\u4e8b\u4ef6\nbot.asyncProcessor(Event.Type.KMARKDOWN, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002this.event \u4e0e Type \u53c2\u6570\u5339\u914d\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getType() = " + event.getType());\n System.out.println("raw = " + raw);\n\n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n return CompletableFuture.completedFuture(null);\n});\n\n// \u53ef\u4ee5\u67e5\u8be2bot\u81ea\u8eab\u7684\u4fe1\u606f\n// \u5982\u679c\u6709\u9700\u8981\uff0c\u8bb0\u5f97\u5904\u7406\u5f02\u5e38\nbot.getMeAsync().thenAccept(me -> {\n // \u5f97\u5230\u7ed3\u679c\n System.out.println("me = " + me);\n});\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startAsync \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// \u5982\u679c\u6709\u9700\u8981\uff0c\u8bb0\u5f97\u5904\u7406\u5f02\u5e38\nbot.startAsync();\n\n// bot.asFuture() \u4f1a\u8f6c\u5316\u4e3a\u4e00\u4e2a\u6d3b\u8dc3\u7684 CompletableFuture\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.asFuture().whenComplete((unit, throwable) -> {\n System.out.println("Bot\u88ab\u7ec8\u6b62\u4e86\u3002");\n System.out.println("throwable: " + throwable);\n});\n')),(0,o.kt)("p",null,"\u4e00\u4e2a\u7b80\u5316\u7248\u7684\u793a\u4f8b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);\n\n// \u8ba2\u9605\u67d0\u4e2a\u5177\u4f53\u4e8b\u4ef6\nbot.asyncProcessor(TextExtra.class, (event, raw) -> {\n // event: Event, \u4e5f\u5c31\u662f\u672c\u6b21\u63a5\u6536\u5230\u7684\u4e8b\u4ef6\u4f53\u3002\u53ea\u6709 extra \u7684\u7c7b\u578b\u5339\u914d\u624d\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u5904\u7406\u5668\n // raw: ws\u8fde\u63a5\u63a5\u6536\u5230\u7684\u539f\u59cb\u4e8b\u4ef6\u7684JSON\u5b57\u7b26\u4e32\n System.out.println("event = " + event);\n System.out.println("event.getExtra() = " + event.getExtra());\n System.out.println("raw = " + raw);\n\n // \u5047\u8bbe\u6709\u4e2a\u5f02\u6b65\u4efb\u52a1\uff0c\u8fd4\u56de\u4e00\u4e2a\u5f02\u6b65\u7ed3\u679c\n // \u26a0 \u4e0d\u8981\u5728\u4efb\u4f55\u5f02\u6b65\u51fd\u6570\u4f53\u4e2d\u8c03\u7528\u963b\u585eAPI\u3002\n // \u4f8b\u5982\uff1abot.getMe(), xxxBlocking\u7b49\u3002\n // \u4efb\u4f55\u6709 xxxAsync \u7b49\u4ef7\u66ff\u4ee3\u7684\u51fd\u6570\u90fd\u662f\u963b\u585e\u51fd\u6570\u3002\n return CompletableFuture.completedFuture(null);\n});\n\n// \u542f\u52a8BOT\u3002\u8c03\u7528 startAsync \u6216\u5176\u4ed6\u884d\u751f\u51fd\u6570 bot \u624d\u4f1a\u5f00\u59cb\u8fde\u63a5\u5230 KOOK \u670d\u52a1\u5668\u5e76\u8ba2\u9605\u6d88\u606f\u3002\n// bot.asFuture() \u4f1a\u8f6c\u5316\u4e3a\u4e00\u4e2a\u6d3b\u8dc3\u7684 CompletableFuture\uff0c\u76f4\u5230 bot \u88ab\u5173\u95ed\uff0c\u4f8b\u5982\u5728\u67d0\u5904\u8c03\u7528 bot.close() \u6216 bot\u4e2d\u7684\u7236Job\u88ab\u5173\u95ed\nbot.startAsync().thenCompose(unit -> bot.asFuture()).whenComplete((unit, throwable) -> {\n System.out.println("Bot\u88ab\u7ec8\u6b62\u4e86\u3002");\n System.out.println("throwable: " + throwable);\n});\n')))),(0,o.kt)("h3",{id:"\u4f7f\u7528bot\u8bf7\u6c42api"},"\u4f7f\u7528BOT\u8bf7\u6c42API"),(0,o.kt)("p",null,"\u5728\u6807\u51c6\u5e93\u4e2d\uff0c\u6211\u4eec\u4e5f\u9488\u5bf9 ",(0,o.kt)("inlineCode",{parentName:"p"},"Bot")," \u63d0\u4f9b\u4e86\u4e00\u4e9b\u7528\u4e8e\u8bf7\u6c42API\u7684\u4fbf\u6377\u65b9\u6cd5\uff0c\u514d\u9664\u4f60\u6bcf\u6b21\u90fd\u9700\u8981\u63d0\u4f9b ",(0,o.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"authorization")," \u7684\u95ee\u9898\u3002"),(0,o.kt)("p",null,"\u4ee5",(0,o.kt)("strong",{parentName:"p"},"\u83b7\u53d6\u9891\u9053\u670d\u52a1\u5668\u5217\u8868API"),"\u4e3a\u4f8b\uff1a"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"\u7701\u7565\u914d\u7f6e\u8fc7\u7a0b\uff0cKotlin\u5404\u5e73\u53f0\u7684\u4f7f\u7528\u65b9\u5f0f\u662f\u4e00\u81f4\u7684\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6784\u5efabot\nval bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {\n // \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565\n}\n\n// \u83b7\u53d6\u9891\u9053\u5217\u8868API\nval api = GetGuildListApi.create()\n\n// \u901a\u8fc7 bot \u8bf7\u6c42\nval dataList = api.requestBy(bot)\n\ndataList.forEach { println("guild: $it") }\n'))),(0,o.kt)(i.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi\nfinal var api = GetGuildListApi.create();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\nfinal var listData = api.requestByBlocking(bot);\n\nfor (SimpleGuild guild : listData) {\n System.out.println("guild = " + guild);\n}\n'))),(0,o.kt)(i.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nfinal var ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nfinal var bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi\nfinal var api = GetGuildListApi.create();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\napi.requestByAsync(bot).thenAccept(listData -> {\n for (SimpleGuild guild : listData) {\n System.out.println("guild = " + guild);\n }\n});\n')))))}v.isMDXComponent=!0},2965:t=>{t.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file diff --git a/assets/js/3d9c95a4.b31d7836.js b/assets/js/3d9c95a4.9081fe18.js similarity index 99% rename from assets/js/3d9c95a4.b31d7836.js rename to assets/js/3d9c95a4.9081fe18.js index eb5864c3..06b1c0fe 100644 --- a/assets/js/3d9c95a4.b31d7836.js +++ b/assets/js/3d9c95a4.9081fe18.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[125],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(r),d=a,b=c["".concat(s,".").concat(d)]||c[d]||m[d]||o;return r?n.createElement(b,l(l({ref:t},p),{},{components:r})):n.createElement(b,l({ref:t},p))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[c]="string"==typeof e?e:a,l[1]=i;for(var u=2;u{r.d(t,{Z:()=>l});var n=r(7294),a=r(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:r,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,l),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>N});var n=r(7462),a=r(7294),o=r(6010),l=r(2466),i=r(6550),s=r(1980),u=r(7392),p=r(12);function c(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function m(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??c(r);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function d(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:r}=e;const n=(0,i.k6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,s._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function f(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,o=m(e),[l,i]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!d({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[s,u]=b({queryString:r,groupId:n}),[c,f]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,p.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:n}),k=(()=>{const e=s??c;return d({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{k&&i(k)}),[k]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!d({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),f(e)}),[u,f,o]),tabValues:o}}var k=r(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:r,selectedValue:i,selectValue:s,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,l.o5)(),m=e=>{const t=e.currentTarget,r=p.indexOf(t),n=u[r].value;n!==i&&(c(t),s(n))},d=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const r=p.indexOf(e.currentTarget)+1;t=p[r]??p[0];break}case"ArrowLeft":{const r=p.indexOf(e.currentTarget)-1;t=p[r]??p[p.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},u.map((e=>{let{value:t,label:r,attributes:l}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>p.push(e),onKeyDown:d,onClick:m},l,{className:(0,o.Z)("tabs__item",h.tabItem,l?.className,{"tabs__item--active":i===t})}),r??t)})))}function v(e){let{lazy:t,children:r,selectedValue:n}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=f(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",h.tabList)},a.createElement(g,(0,n.Z)({},e,t)),a.createElement(v,(0,n.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return a.createElement(y,(0,n.Z)({key:String(t)},e))}},3191:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));r(4866),r(5162);const o={slug:"/",sidebar_position:1},l="\u9996\u9875",i={unversionedId:"home",id:"home",title:"\u9996\u9875",description:"\u6b22\u8fce\u6765\u5230 Simple Robot \uff08\u4e0b\u6587\u7b80\u79f0 simbot\uff09 \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6 \uff08\u4e0b\u6587\u7b80\u79f0 KOOK\u7ec4\u4ef6\uff09 \u6587\u6863\u3002",source:"@site/docs/home.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/home.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:1,frontMatter:{slug:"/",sidebar_position:1},sidebar:"tutorialSidebar",next:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/quick-start/"}},s={},u=[{value:"\u6a21\u5757\u7b80\u4ecb",id:"\u6a21\u5757\u7b80\u4ecb",level:2},{value:"API\u6a21\u5757",id:"api\u6a21\u5757",level:3},{value:"stdlib \u6807\u51c6\u5e93\u6a21\u5757",id:"stdlib-\u6807\u51c6\u5e93\u6a21\u5757",level:3},{value:"core \u6838\u5fc3\u5e93",id:"core-\u6838\u5fc3\u5e93",level:3}],p={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"\u9996\u9875"},"\u9996\u9875"),(0,a.kt)("p",null,"\u6b22\u8fce\u6765\u5230 ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"Simple Robot")," ",(0,a.kt)("small",null,"\uff08\u4e0b\u6587\u7b80\u79f0 ",(0,a.kt)("i",null,(0,a.kt)("inlineCode",{parentName:"p"},"simbot")),"\uff09")," \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6 ",(0,a.kt)("small",null,"\uff08\u4e0b\u6587\u7b80\u79f0 ",(0,a.kt)("i",null,(0,a.kt)("inlineCode",{parentName:"p"},"KOOK\u7ec4\u4ef6")),"\uff09")," \u6587\u6863\u3002"),(0,a.kt)("p",null,"KOOK\u7ec4\u4ef6\u662f\u57fa\u4e8e ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"simbot\u6838\u5fc3\u5e93")," \u5bf9 ",(0,a.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/reference"},"KOOK\u673a\u5668\u4eba")," \u7684\u5b9e\u73b0\u3002"),(0,a.kt)("p",null,"KOOK\u7ec4\u4ef6\u7531Kotlin\u8bed\u8a00\u7f16\u5199\uff0c\u4e0d\u540c\u7684\u6a21\u5757\u5206\u522b\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"KMP (Kotlin Multiplatform)")," \u6216 ",(0,a.kt)("strong",{parentName:"p"},"Kotlin/JVM")," \u6784\u5efa\u3002\n\u5728JVM\u5e73\u53f0\u4e0a\u5bf9 Java \u53cb\u597d\uff0c\u5e76\u57fa\u4e8e KMP \u63d0\u4f9b\u66f4\u591a\u5e73\u53f0\u7684\u53ef\u80fd\u6027\u3002"),(0,a.kt)("admonition",{title:"\u57fa\u672c\u529f\u80fd",type:"info"},(0,a.kt)("p",{parentName:"admonition"},"\u5bf9\u4e8esimbot\u7edd\u5927\u591a\u6570\u7684\u6807\u51c6\u3001\u57fa\u672c\u529f\u80fd\u7684\u4ecb\u7ecd\u90fd\u5728 ",(0,a.kt)("a",{parentName:"p",href:"https://simbot.forte.love/"},"simbot\u5b98\u7f51")," \u4e2d\u3002")),(0,a.kt)("h2",{id:"\u6a21\u5757\u7b80\u4ecb"},"\u6a21\u5757\u7b80\u4ecb"),(0,a.kt)("p",null,"simbot\u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6\u6574\u4e2a\u9879\u76ee\u5206\u4e3a\u4e09\u4e2a\u4e3b\u8981\u6a21\u5757\u3002\u5b83\u4eec\u5206\u522b\u662f ",(0,a.kt)("strong",{parentName:"p"},"API\u6a21\u5757"),"\u3001",(0,a.kt)("strong",{parentName:"p"},"stdlib\uff08\u6807\u51c6\u5e93\uff09\u6a21\u5757"),"\u548c",(0,a.kt)("strong",{parentName:"p"},"core\uff08\u6838\u5fc3\u5e93\uff09\u6a21\u5757"),"\u3002"),(0,a.kt)("h3",{id:"api\u6a21\u5757"},"API\u6a21\u5757"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"API\u6a21\u5757\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,a.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,a.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,a.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002")),(0,a.kt)("p",null,"API\u6a21\u5757\u7684\u4e3b\u8981\u4f5c\u7528\u662f\u63d0\u4f9b\u9488\u5bf9KOOK\u673a\u5668\u4eba\u5f00\u53d1\u5e73\u53f0\u4e2d\u7684\u5404API\u548c\u4e8b\u4ef6\u7c7b\u578b\u7684\u5e95\u5c42\u5c01\u88c5\u3002\u6b64\u6a21\u5757",(0,a.kt)("strong",{parentName:"p"},"\u4e0d\u63d0\u4f9b"),"\u8fc7\u5ea6\u7684\u529f\u80fd\u6027\u5c01\u88c5\uff0c\n\u4e3b\u8981\u5b97\u65e8\u4e3a\u5728\u98ce\u683c\u7edf\u4e00\u7684\u60c5\u51b5\u4e0b\u5c06API\u548c\u4e8b\u4ef6",(0,a.kt)("strong",{parentName:"p"},"\u63cf\u8ff0"),"\u4e3a\u53ef\u4f9b\u4f7f\u7528\u7684\u4f9d\u8d56\u5e93\u3002"),(0,a.kt)("h3",{id:"stdlib-\u6807\u51c6\u5e93\u6a21\u5757"},"stdlib \u6807\u51c6\u5e93\u6a21\u5757"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"\u6807\u51c6\u5e93\u6a21\u5757\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,a.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,a.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,a.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u548c ws \u4e8b\u4ef6\u8ba2\u9605\u7684\u89e3\u51b3\u65b9\u6848\u3002")),(0,a.kt)("p",null,"\u6807\u51c6\u5e93\u6a21\u5757\u4f9d\u8d56API\u6a21\u5757\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\u989d\u5916\u63d0\u4f9bKOOK\u4e2d ",(0,a.kt)("strong",{parentName:"p"},"Bot")," \u6982\u5ff5\u7684\u5c01\u88c5\u4e0e\u80fd\u529b\u5b9e\u73b0\uff0c\u8fbe\u5230\u5bf9\u4e00\u4e2a Bot \u7684\u4e8b\u4ef6\u8ba2\u9605\u3001\u6d88\u606f\u53d1\u9001\u7b49\u80fd\u529b\u3002\n\u4e0eAPI\u6a21\u5757\u7c7b\u578b\uff0c\u6807\u51c6\u5e93\u6a21\u5757\u7684\u4e3b\u8981\u5b97\u65e8\u540c\u6837\u662f\u5728\u98ce\u683c\u7edf\u4e00\u7684\u60c5\u51b5\u4e0b\u5c06Bot\u4e0e\u4e8b\u4ef6\u8ba2\u9605\u7684\u80fd\u529b",(0,a.kt)("strong",{parentName:"p"},"\u63cf\u8ff0"),"\u4e3a\u53ef\u4f9b\u4f7f\u7528\u7684\u4f9d\u8d56\u5e93\u3002"),(0,a.kt)("hr",null),(0,a.kt)("admonition",{title:"\u72ec\u7acb ",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("strong",{parentName:"p"},"API\u6a21\u5757"),"\u548c",(0,a.kt)("strong",{parentName:"p"},"\u6807\u51c6\u5e93\u6a21\u5757"),"\u4e0e",(0,a.kt)("strong",{parentName:"p"},"simbot"),"\u7684\u5173\u7cfb\u4e3b\u8981\u4f53\u73b0\u5728\u8f83\u4e3a\u7edf\u4e00\u7684",(0,a.kt)("strong",{parentName:"p"},"\u98ce\u683c"),"\u4e0a\u3002\u5b9e\u8d28\u4e0a\u8fd9\u4e24\u4e2a\u6a21\u5757",(0,a.kt)("strong",{parentName:"p"},"\u4e0d\u76f4\u63a5\u4f9d\u8d56"),"\u4e0esimbot\u76f8\u5173\u7684\u5e93\u3002\uff08\u53ef\u80fd\u5b58\u5728\u90e8\u5206\u4ec5\u7f16\u8bd1\u4f9d\u8d56\u6216\u7f16\u8bd1\u5668\u63d2\u4ef6\u4f9d\u8d56\uff09"),(0,a.kt)("p",{parentName:"admonition"},"\u5b83\u4eec\u4e24\u4e2a\u662f\u53ef\u4ee5\u5b8c\u5168\u4f5c\u4e3a\u72ec\u7acb\u7684\u5e95\u5c42API\u4f9d\u8d56\u5e93\u4f7f\u7528\u7684\u3002")),(0,a.kt)("h3",{id:"core-\u6838\u5fc3\u5e93"},"core \u6838\u5fc3\u5e93"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"\u6838\u5fc3\u5e93\u6a21\u5757\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"Kotlin/JVM")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,a.kt)("strong",{parentName:"p"},"JVM")," \u5e73\u53f0\uff0c\u517c\u5bb9\u5e76\u63d0\u4f9b\u53cb\u597d\u7684Java API\u3002")),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u662f\u5bf9",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"simbot\u6838\u5fc3\u5e93"),"\u7684KOOK\u673a\u5668\u4eba\u5b9e\u73b0\uff0c\u4e5f\u662f\u6b64\u9879\u76ee\u4f5c\u4e3a",(0,a.kt)("strong",{parentName:"p"},"\u201csimbot\u7ec4\u4ef6\u201d"),"\u7684\u4e3b\u8981\u4f53\u73b0\u3002"),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u4f9d\u8d56\u5e76\u5b9e\u73b0 ",(0,a.kt)("strong",{parentName:"p"},"simbot API"),"\uff0c\u9488\u5bf9\u5176\u5b9a\u4e49\u7684\u5404\u7c7b\u578b\u6765\u63d0\u4f9bsimbot\u98ce\u683c\u7684 KOOK API \u5b9e\u73b0\u3002\u4f8b\u5982\u5b9e\u73b0 simbot \u63d0\u4f9b\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Bot")," \u7c7b\u578b\u4e3a ",(0,a.kt)("inlineCode",{parentName:"p"},"KookBot")," \u5e76\u63d0\u4f9bKOOK\u7ec4\u4ef6\u4e0b\u7684\u5404\u79cd\u72ec\u7279\u80fd\u529b\u3002"),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u662f\u4e00\u79cd\u9ad8\u7ea7\u5c01\u88c5\uff0c\u5b83\u4f1a\u501f\u52a9 simbot API \u5f3a\u5927\u7684\u80fd\u529b\u6765\u63d0\u4f9b\u5927\u91cf\u9ad8\u7ea7\u529f\u80fd\uff0c\u4f8b\u5982\u5bf9\u4e8b\u4ef6\u7684\u8ba2\u9605\u548c\u66f4\u4fbf\u6377\u7684\u6d88\u606f\u53d1\u9001\u3001\u5bf9 Spring Boot \u7684\u652f\u6301\u7b49\u3002"),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u4f1a\u5c3d\u53ef\u80fd\u5c4f\u853d\u6389",(0,a.kt)("strong",{parentName:"p"},"\u5e95\u5c42API"),"\uff08\u4e0a\u8ff0\u4e24\u4e2a\u6a21\u5757\uff09\uff0c\u4f7f\u5176\u5bf9\u5f00\u53d1\u8005\u900f\u660e\uff0c\u53d6\u800c\u4ee3\u4e4b\u7684\u662f\u66f4\u52a0\u6e05\u6670\u660e\u4e86\u7684API\u3002"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"\u5f53\u7136\uff0c\u5bf9\u4e8e\u4e00\u4e9b\u7279\u6b8a\u573a\u666f\u6216\u4e0d\u5f97\u5df2\u7684\u60c5\u51b5\uff0c\u5f00\u53d1\u8005\u4f9d\u65e7\u53ef\u4ee5\u5f88\u8f7b\u677e\u7684\u4f7f\u7528\u5e95\u5c42API\u6765\u8fbe\u6210\u6240\u6c42\u76ee\u7684\u3002")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[125],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),c=u(r),d=a,b=c["".concat(s,".").concat(d)]||c[d]||m[d]||o;return r?n.createElement(b,l(l({ref:t},p),{},{components:r})):n.createElement(b,l({ref:t},p))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[c]="string"==typeof e?e:a,l[1]=i;for(var u=2;u{r.d(t,{Z:()=>l});var n=r(7294),a=r(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:r,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,l),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>N});var n=r(7462),a=r(7294),o=r(6010),l=r(2466),i=r(6550),s=r(1980),u=r(7392),p=r(12);function c(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function m(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??c(r);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function d(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:r}=e;const n=(0,i.k6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,s._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function f(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,o=m(e),[l,i]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!d({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[s,u]=b({queryString:r,groupId:n}),[c,f]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,p.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:n}),k=(()=>{const e=s??c;return d({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{k&&i(k)}),[k]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!d({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),f(e)}),[u,f,o]),tabValues:o}}var k=r(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:r,selectedValue:i,selectValue:s,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:c}=(0,l.o5)(),m=e=>{const t=e.currentTarget,r=p.indexOf(t),n=u[r].value;n!==i&&(c(t),s(n))},d=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const r=p.indexOf(e.currentTarget)+1;t=p[r]??p[0];break}case"ArrowLeft":{const r=p.indexOf(e.currentTarget)-1;t=p[r]??p[p.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},u.map((e=>{let{value:t,label:r,attributes:l}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>p.push(e),onKeyDown:d,onClick:m},l,{className:(0,o.Z)("tabs__item",h.tabItem,l?.className,{"tabs__item--active":i===t})}),r??t)})))}function v(e){let{lazy:t,children:r,selectedValue:n}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=f(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",h.tabList)},a.createElement(g,(0,n.Z)({},e,t)),a.createElement(v,(0,n.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return a.createElement(y,(0,n.Z)({key:String(t)},e))}},3191:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));r(4866),r(5162);const o={slug:"/",sidebar_position:1},l="\u9996\u9875",i={unversionedId:"home",id:"home",title:"\u9996\u9875",description:"\u6b22\u8fce\u6765\u5230 Simple Robot \uff08\u4e0b\u6587\u7b80\u79f0 simbot\uff09 \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6 \uff08\u4e0b\u6587\u7b80\u79f0 KOOK\u7ec4\u4ef6\uff09 \u6587\u6863\u3002",source:"@site/docs/home.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/home.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:1,frontMatter:{slug:"/",sidebar_position:1},sidebar:"tutorialSidebar",next:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/quick-start/"}},s={},u=[{value:"\u6a21\u5757\u7b80\u4ecb",id:"\u6a21\u5757\u7b80\u4ecb",level:2},{value:"API\u6a21\u5757",id:"api\u6a21\u5757",level:3},{value:"stdlib \u6807\u51c6\u5e93\u6a21\u5757",id:"stdlib-\u6807\u51c6\u5e93\u6a21\u5757",level:3},{value:"core \u6838\u5fc3\u5e93",id:"core-\u6838\u5fc3\u5e93",level:3}],p={toc:u},c="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"\u9996\u9875"},"\u9996\u9875"),(0,a.kt)("p",null,"\u6b22\u8fce\u6765\u5230 ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"Simple Robot")," ",(0,a.kt)("small",null,"\uff08\u4e0b\u6587\u7b80\u79f0 ",(0,a.kt)("i",null,(0,a.kt)("inlineCode",{parentName:"p"},"simbot")),"\uff09")," \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6 ",(0,a.kt)("small",null,"\uff08\u4e0b\u6587\u7b80\u79f0 ",(0,a.kt)("i",null,(0,a.kt)("inlineCode",{parentName:"p"},"KOOK\u7ec4\u4ef6")),"\uff09")," \u6587\u6863\u3002"),(0,a.kt)("p",null,"KOOK\u7ec4\u4ef6\u662f\u57fa\u4e8e ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"simbot\u6838\u5fc3\u5e93")," \u5bf9 ",(0,a.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/reference"},"KOOK\u673a\u5668\u4eba")," \u7684\u5b9e\u73b0\u3002"),(0,a.kt)("p",null,"KOOK\u7ec4\u4ef6\u7531Kotlin\u8bed\u8a00\u7f16\u5199\uff0c\u4e0d\u540c\u7684\u6a21\u5757\u5206\u522b\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"KMP (Kotlin Multiplatform)")," \u6216 ",(0,a.kt)("strong",{parentName:"p"},"Kotlin/JVM")," \u6784\u5efa\u3002\n\u5728JVM\u5e73\u53f0\u4e0a\u5bf9 Java \u53cb\u597d\uff0c\u5e76\u57fa\u4e8e KMP \u63d0\u4f9b\u66f4\u591a\u5e73\u53f0\u7684\u53ef\u80fd\u6027\u3002"),(0,a.kt)("admonition",{title:"\u57fa\u672c\u529f\u80fd",type:"info"},(0,a.kt)("p",{parentName:"admonition"},"\u5bf9\u4e8esimbot\u7edd\u5927\u591a\u6570\u7684\u6807\u51c6\u3001\u57fa\u672c\u529f\u80fd\u7684\u4ecb\u7ecd\u90fd\u5728 ",(0,a.kt)("a",{parentName:"p",href:"https://simbot.forte.love/"},"simbot\u5b98\u7f51")," \u4e2d\u3002")),(0,a.kt)("h2",{id:"\u6a21\u5757\u7b80\u4ecb"},"\u6a21\u5757\u7b80\u4ecb"),(0,a.kt)("p",null,"simbot\u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6\u6574\u4e2a\u9879\u76ee\u5206\u4e3a\u4e09\u4e2a\u4e3b\u8981\u6a21\u5757\u3002\u5b83\u4eec\u5206\u522b\u662f ",(0,a.kt)("strong",{parentName:"p"},"API\u6a21\u5757"),"\u3001",(0,a.kt)("strong",{parentName:"p"},"stdlib\uff08\u6807\u51c6\u5e93\uff09\u6a21\u5757"),"\u548c",(0,a.kt)("strong",{parentName:"p"},"core\uff08\u6838\u5fc3\u5e93\uff09\u6a21\u5757"),"\u3002"),(0,a.kt)("h3",{id:"api\u6a21\u5757"},"API\u6a21\u5757"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"API\u6a21\u5757\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,a.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,a.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,a.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002")),(0,a.kt)("p",null,"API\u6a21\u5757\u7684\u4e3b\u8981\u4f5c\u7528\u662f\u63d0\u4f9b\u9488\u5bf9KOOK\u673a\u5668\u4eba\u5f00\u53d1\u5e73\u53f0\u4e2d\u7684\u5404API\u548c\u4e8b\u4ef6\u7c7b\u578b\u7684\u5e95\u5c42\u5c01\u88c5\u3002\u6b64\u6a21\u5757",(0,a.kt)("strong",{parentName:"p"},"\u4e0d\u63d0\u4f9b"),"\u8fc7\u5ea6\u7684\u529f\u80fd\u6027\u5c01\u88c5\uff0c\n\u4e3b\u8981\u5b97\u65e8\u4e3a\u5728\u98ce\u683c\u7edf\u4e00\u7684\u60c5\u51b5\u4e0b\u5c06API\u548c\u4e8b\u4ef6",(0,a.kt)("strong",{parentName:"p"},"\u63cf\u8ff0"),"\u4e3a\u53ef\u4f9b\u4f7f\u7528\u7684\u4f9d\u8d56\u5e93\u3002"),(0,a.kt)("h3",{id:"stdlib-\u6807\u51c6\u5e93\u6a21\u5757"},"stdlib \u6807\u51c6\u5e93\u6a21\u5757"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"\u6807\u51c6\u5e93\u6a21\u5757\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,a.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,a.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,a.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u548c ws \u4e8b\u4ef6\u8ba2\u9605\u7684\u89e3\u51b3\u65b9\u6848\u3002")),(0,a.kt)("p",null,"\u6807\u51c6\u5e93\u6a21\u5757\u4f9d\u8d56API\u6a21\u5757\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\u989d\u5916\u63d0\u4f9bKOOK\u4e2d ",(0,a.kt)("strong",{parentName:"p"},"Bot")," \u6982\u5ff5\u7684\u5c01\u88c5\u4e0e\u80fd\u529b\u5b9e\u73b0\uff0c\u8fbe\u5230\u5bf9\u4e00\u4e2a Bot \u7684\u4e8b\u4ef6\u8ba2\u9605\u3001\u6d88\u606f\u53d1\u9001\u7b49\u80fd\u529b\u3002\n\u4e0eAPI\u6a21\u5757\u7c7b\u578b\uff0c\u6807\u51c6\u5e93\u6a21\u5757\u7684\u4e3b\u8981\u5b97\u65e8\u540c\u6837\u662f\u5728\u98ce\u683c\u7edf\u4e00\u7684\u60c5\u51b5\u4e0b\u5c06Bot\u4e0e\u4e8b\u4ef6\u8ba2\u9605\u7684\u80fd\u529b",(0,a.kt)("strong",{parentName:"p"},"\u63cf\u8ff0"),"\u4e3a\u53ef\u4f9b\u4f7f\u7528\u7684\u4f9d\u8d56\u5e93\u3002"),(0,a.kt)("hr",null),(0,a.kt)("admonition",{title:"\u72ec\u7acb ",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("strong",{parentName:"p"},"API\u6a21\u5757"),"\u548c",(0,a.kt)("strong",{parentName:"p"},"\u6807\u51c6\u5e93\u6a21\u5757"),"\u4e0e",(0,a.kt)("strong",{parentName:"p"},"simbot"),"\u7684\u5173\u7cfb\u4e3b\u8981\u4f53\u73b0\u5728\u8f83\u4e3a\u7edf\u4e00\u7684",(0,a.kt)("strong",{parentName:"p"},"\u98ce\u683c"),"\u4e0a\u3002\u5b9e\u8d28\u4e0a\u8fd9\u4e24\u4e2a\u6a21\u5757",(0,a.kt)("strong",{parentName:"p"},"\u4e0d\u76f4\u63a5\u4f9d\u8d56"),"\u4e0esimbot\u76f8\u5173\u7684\u5e93\u3002\uff08\u53ef\u80fd\u5b58\u5728\u90e8\u5206\u4ec5\u7f16\u8bd1\u4f9d\u8d56\u6216\u7f16\u8bd1\u5668\u63d2\u4ef6\u4f9d\u8d56\uff09"),(0,a.kt)("p",{parentName:"admonition"},"\u5b83\u4eec\u4e24\u4e2a\u662f\u53ef\u4ee5\u5b8c\u5168\u4f5c\u4e3a\u72ec\u7acb\u7684\u5e95\u5c42API\u4f9d\u8d56\u5e93\u4f7f\u7528\u7684\u3002")),(0,a.kt)("h3",{id:"core-\u6838\u5fc3\u5e93"},"core \u6838\u5fc3\u5e93"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"\u6838\u5fc3\u5e93\u6a21\u5757\u57fa\u4e8e ",(0,a.kt)("strong",{parentName:"p"},"Kotlin/JVM")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,a.kt)("strong",{parentName:"p"},"JVM")," \u5e73\u53f0\uff0c\u517c\u5bb9\u5e76\u63d0\u4f9b\u53cb\u597d\u7684Java API\u3002")),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u662f\u5bf9",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"simbot\u6838\u5fc3\u5e93"),"\u7684KOOK\u673a\u5668\u4eba\u5b9e\u73b0\uff0c\u4e5f\u662f\u6b64\u9879\u76ee\u4f5c\u4e3a",(0,a.kt)("strong",{parentName:"p"},"\u201csimbot\u7ec4\u4ef6\u201d"),"\u7684\u4e3b\u8981\u4f53\u73b0\u3002"),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u4f9d\u8d56\u5e76\u5b9e\u73b0 ",(0,a.kt)("strong",{parentName:"p"},"simbot API"),"\uff0c\u9488\u5bf9\u5176\u5b9a\u4e49\u7684\u5404\u7c7b\u578b\u6765\u63d0\u4f9bsimbot\u98ce\u683c\u7684 KOOK API \u5b9e\u73b0\u3002\u4f8b\u5982\u5b9e\u73b0 simbot \u63d0\u4f9b\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Bot")," \u7c7b\u578b\u4e3a ",(0,a.kt)("inlineCode",{parentName:"p"},"KookBot")," \u5e76\u63d0\u4f9bKOOK\u7ec4\u4ef6\u4e0b\u7684\u5404\u79cd\u72ec\u7279\u80fd\u529b\u3002"),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u662f\u4e00\u79cd\u9ad8\u7ea7\u5c01\u88c5\uff0c\u5b83\u4f1a\u501f\u52a9 simbot API \u5f3a\u5927\u7684\u80fd\u529b\u6765\u63d0\u4f9b\u5927\u91cf\u9ad8\u7ea7\u529f\u80fd\uff0c\u4f8b\u5982\u5bf9\u4e8b\u4ef6\u7684\u8ba2\u9605\u548c\u66f4\u4fbf\u6377\u7684\u6d88\u606f\u53d1\u9001\u3001\u5bf9 Spring Boot \u7684\u652f\u6301\u7b49\u3002"),(0,a.kt)("p",null,"\u6838\u5fc3\u5e93\u6a21\u5757\u4f1a\u5c3d\u53ef\u80fd\u5c4f\u853d\u6389",(0,a.kt)("strong",{parentName:"p"},"\u5e95\u5c42API"),"\uff08\u4e0a\u8ff0\u4e24\u4e2a\u6a21\u5757\uff09\uff0c\u4f7f\u5176\u5bf9\u5f00\u53d1\u8005\u900f\u660e\uff0c\u53d6\u800c\u4ee3\u4e4b\u7684\u662f\u66f4\u52a0\u6e05\u6670\u660e\u4e86\u7684API\u3002"),(0,a.kt)("admonition",{title:"\u6982\u8981",type:"note"},(0,a.kt)("p",{parentName:"admonition"},"\u5f53\u7136\uff0c\u5bf9\u4e8e\u4e00\u4e9b\u7279\u6b8a\u573a\u666f\u6216\u4e0d\u5f97\u5df2\u7684\u60c5\u51b5\uff0c\u5f00\u53d1\u8005\u4f9d\u65e7\u53ef\u4ee5\u5f88\u8f7b\u677e\u7684\u4f7f\u7528\u5e95\u5c42API\u6765\u8fbe\u6210\u6240\u6c42\u76ee\u7684\u3002")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/463b5da4.62b55e5e.js b/assets/js/463b5da4.9a6167a0.js similarity index 98% rename from assets/js/463b5da4.62b55e5e.js rename to assets/js/463b5da4.9a6167a0.js index 25fff583..88f56cb0 100644 --- a/assets/js/463b5da4.62b55e5e.js +++ b/assets/js/463b5da4.9a6167a0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[921],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||i;return r?n.createElement(m,a(a({ref:t},p),{},{components:r})):n.createElement(m,a({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},a=void 0,c={unversionedId:"quick-start/stdlib",id:"version-3.0.0.0-alpha.7/quick-start/stdlib",title:"\u4f7f\u7528\u6807\u51c6\u5e93",description:"\u65bd\u5de5\u4e2d",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/stdlib.md",sourceDirName:"quick-start",slug:"/quick-start/stdlib",permalink:"/docs/3.0.0.0-alpha.7/quick-start/stdlib",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/stdlib.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:2,frontMatter:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528API",permalink:"/docs/3.0.0.0-alpha.7/quick-start/api"},next:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/simbot-core"}},s={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"TODO",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\u65bd\u5de5\u4e2d")))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[921],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||i;return r?n.createElement(m,a(a({ref:t},p),{},{components:r})):n.createElement(m,a({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},a=void 0,c={unversionedId:"quick-start/stdlib",id:"version-3.0.0.0-alpha.7/quick-start/stdlib",title:"\u4f7f\u7528\u6807\u51c6\u5e93",description:"\u65bd\u5de5\u4e2d",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/stdlib.md",sourceDirName:"quick-start",slug:"/quick-start/stdlib",permalink:"/docs/3.0.0.0-alpha.7/quick-start/stdlib",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/stdlib.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:2,frontMatter:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528API",permalink:"/docs/3.0.0.0-alpha.7/quick-start/api"},next:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/simbot-core"}},s={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"TODO",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\u65bd\u5de5\u4e2d")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4ba18d9a.524dcfd6.js b/assets/js/4ba18d9a.33d2f624.js similarity index 98% rename from assets/js/4ba18d9a.524dcfd6.js rename to assets/js/4ba18d9a.33d2f624.js index 9f22214a..5e862f53 100644 --- a/assets/js/4ba18d9a.524dcfd6.js +++ b/assets/js/4ba18d9a.33d2f624.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[127],{3905:(t,e,r)=>{r.d(e,{Zo:()=>l,kt:()=>b});var n=r(7294);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var c=n.createContext({}),p=function(t){var e=n.useContext(c),r=e;return t&&(r="function"==typeof t?t(e):a(a({},e),t)),r},l=function(t){var e=p(t.components);return n.createElement(c.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var r=t.components,o=t.mdxType,i=t.originalType,c=t.parentName,l=s(t,["components","mdxType","originalType","parentName"]),m=p(r),d=o,b=m["".concat(c,".").concat(d)]||m[d]||u[d]||i;return r?n.createElement(b,a(a({ref:e},l),{},{components:r})):n.createElement(b,a({ref:e},l))}));function b(t,e){var r=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=r.length,a=new Array(i);a[0]=d;var s={};for(var c in e)hasOwnProperty.call(e,c)&&(s[c]=e[c]);s.originalType=t,s[m]="string"==typeof t?t:o,a[1]=s;for(var p=2;p{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},a=void 0,s={unversionedId:"quick-start/simbot-core",id:"version-3.0.0.0-alpha.7/quick-start/simbot-core",title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",description:"\u4f60\u53ef\u4ee5\u53c2\u8003simbot3\u5b98\u7f51\u4e2d\u7684 \u300a\u4f7f\u7528\u6838\u5fc3\u5e93\u300b",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/simbot-core.md",sourceDirName:"quick-start",slug:"/quick-start/simbot-core",permalink:"/docs/3.0.0.0-alpha.7/quick-start/simbot-core",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/simbot-core.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:3,frontMatter:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/stdlib"},next:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/3.0.0.0-alpha.7/quick-start/spring-boot"}},c={},p=[],l={toc:p},m="wrapper";function u(t){let{components:e,...r}=t;return(0,o.kt)(m,(0,n.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"\u5176\u4ed6\u53c2\u8003",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u53ef\u4ee5\u53c2\u8003simbot3\u5b98\u7f51\u4e2d\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/quick-start/core"},"\u300a\u4f7f\u7528\u6838\u5fc3\u5e93\u300b"))),(0,o.kt)("admonition",{title:"TODO",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\u65bd\u5de5\u4e2d"),(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u53ef\u4ee5\u5148\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"spring-boot"},"\u4f7f\u7528SpringBoot"),"\uff0c\u5b83\u76f8\u5f53\u4e8e\u5728 Spring Boot \u73af\u5883\u4e0b\u4f7f\u7528simbot\u6838\u5fc3\u5e93\u3002")))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[127],{3905:(t,e,r)=>{r.d(e,{Zo:()=>l,kt:()=>b});var n=r(7294);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var c=n.createContext({}),p=function(t){var e=n.useContext(c),r=e;return t&&(r="function"==typeof t?t(e):a(a({},e),t)),r},l=function(t){var e=p(t.components);return n.createElement(c.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var r=t.components,o=t.mdxType,i=t.originalType,c=t.parentName,l=s(t,["components","mdxType","originalType","parentName"]),m=p(r),d=o,b=m["".concat(c,".").concat(d)]||m[d]||u[d]||i;return r?n.createElement(b,a(a({ref:e},l),{},{components:r})):n.createElement(b,a({ref:e},l))}));function b(t,e){var r=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=r.length,a=new Array(i);a[0]=d;var s={};for(var c in e)hasOwnProperty.call(e,c)&&(s[c]=e[c]);s.originalType=t,s[m]="string"==typeof t?t:o,a[1]=s;for(var p=2;p{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},a=void 0,s={unversionedId:"quick-start/simbot-core",id:"version-3.0.0.0-alpha.7/quick-start/simbot-core",title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",description:"\u4f60\u53ef\u4ee5\u53c2\u8003simbot3\u5b98\u7f51\u4e2d\u7684 \u300a\u4f7f\u7528\u6838\u5fc3\u5e93\u300b",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/simbot-core.md",sourceDirName:"quick-start",slug:"/quick-start/simbot-core",permalink:"/docs/3.0.0.0-alpha.7/quick-start/simbot-core",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/simbot-core.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:3,frontMatter:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/stdlib"},next:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/3.0.0.0-alpha.7/quick-start/spring-boot"}},c={},p=[],l={toc:p},m="wrapper";function u(t){let{components:e,...r}=t;return(0,o.kt)(m,(0,n.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"\u5176\u4ed6\u53c2\u8003",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u53ef\u4ee5\u53c2\u8003simbot3\u5b98\u7f51\u4e2d\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/quick-start/core"},"\u300a\u4f7f\u7528\u6838\u5fc3\u5e93\u300b"))),(0,o.kt)("admonition",{title:"TODO",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\u65bd\u5de5\u4e2d"),(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u53ef\u4ee5\u5148\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"spring-boot"},"\u4f7f\u7528SpringBoot"),"\uff0c\u5b83\u76f8\u5f53\u4e8e\u5728 Spring Boot \u73af\u5883\u4e0b\u4f7f\u7528simbot\u6838\u5fc3\u5e93\u3002")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5535f311.2f310a0e.js b/assets/js/5535f311.21429455.js similarity index 99% rename from assets/js/5535f311.2f310a0e.js rename to assets/js/5535f311.21429455.js index 2f2371de..e5902356 100644 --- a/assets/js/5535f311.2f310a0e.js +++ b/assets/js/5535f311.21429455.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[12],{5162:(t,e,a)=>{a.d(e,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(t){let{children:e,hidden:a,className:o}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>N});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),i=a(6550),p=a(1980),u=a(7392),s=a(12);function c(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function d(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??c(a);return function(t){const e=(0,u.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[e,a])}function m(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function k(t){let{queryString:e=!1,groupId:a}=t;const n=(0,i.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function v(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=d(t),[o,i]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!m({value:e,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[p,u]=k({queryString:a,groupId:n}),[c,v]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,s.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),h=(()=>{const t=p??c;return m({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{h&&i(h)}),[h]);return{selectedValue:o,selectValue:(0,r.useCallback)((t=>{if(!m({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);i(t),u(t),v(t)}),[u,v,l]),tabValues:l}}var h=a(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(t){let{className:e,block:a,selectedValue:i,selectValue:p,tabValues:u}=t;const s=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.o5)(),d=t=>{const e=t.currentTarget,a=s.indexOf(e),n=u[a].value;n!==i&&(c(e),p(n))},m=t=>{let e=null;switch(t.key){case"Enter":d(t);break;case"ArrowRight":{const a=s.indexOf(t.currentTarget)+1;e=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(t.currentTarget)-1;e=s[a]??s[s.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},u.map((t=>{let{value:e,label:a,attributes:o}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===e?0:-1,"aria-selected":i===e,key:e,ref:t=>s.push(t),onKeyDown:m,onClick:d},o,{className:(0,l.Z)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":i===e})}),a??e)})))}function f(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function x(t){const e=v(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},r.createElement(b,(0,n.Z)({},t,e)),r.createElement(f,(0,n.Z)({},t,e)))}function N(t){const e=(0,h.Z)();return r.createElement(x,(0,n.Z)({key:String(e)},t))}},3825:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>u,metadata:()=>c,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162),i=a(614),p=a(2965);const u={title:"\u4f7f\u7528API",sidebar_position:2},s=void 0,c={unversionedId:"quick-start/api",id:"quick-start/api",title:"\u4f7f\u7528API",description:"API\u6a21\u5757\u57fa\u4e8e KMP \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 JVM\u3001JS\u3001Native \u5e73\u53f0\uff0c\u4f7f\u7528 Ktor \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002",source:"@site/docs/quick-start/api.md",sourceDirName:"quick-start",slug:"/quick-start/api",permalink:"/docs/quick-start/api",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/api.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:2,frontMatter:{title:"\u4f7f\u7528API",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/quick-start/"},next:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/quick-start/stdlib"}},d={},m=[{value:"\u5b89\u88c5",id:"\u5b89\u88c5",level:2},{value:"\u4f7f\u7528",id:"\u4f7f\u7528",level:2},{value:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",level:3}],k={toc:m},v="wrapper";function h(t){let{components:e,...a}=t;return(0,r.kt)(v,(0,n.Z)({},k,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"API\u6a21\u5757\u57fa\u4e8e ",(0,r.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,r.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,r.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002"),(0,r.kt)("p",null,"API\u6a21\u5757\u662f",(0,r.kt)("strong",{parentName:"p"},"\u72ec\u7acb\u7684"),"\uff0c\u5b9e\u8d28\u4e0a\u5e76\u4e0d\u4f9d\u8d56 simbot API\u3002\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/"},"KOOK API")," \u7684\u5e95\u5c42\u5c01\u88c5\u5e93\u3002"),(0,r.kt)("h2",{id:"\u5b89\u88c5"},"\u5b89\u88c5"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"1. \u5b89\u88c5 kook-api \u4f9d\u8d56")),(0,r.kt)(l.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,r.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,r.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,r.kt)(i.Z,{language:"kotlin",mdxType:"CodeBlock"},'\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\n kotlin("jvm") version "\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c"\n // \u6216 multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n // \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n'.trim()),(0,r.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,r.kt)(i.Z,{language:"kotlin",mdxType:"CodeBlock"},`\nimplementation("love.forte.simbot.component:simbot-component-kook-api:${p.i}") // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(o.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,r.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,r.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,r.kt)(i.Z,{language:"gradle",mdxType:"CodeBlock"},"\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\n id 'org.jetbrains.kotlin.jvm' version '\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c'\n // \u6216 org.jetbrains.kotlin.multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n // \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n".trim()),(0,r.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,r.kt)(i.Z,{language:"gradle",mdxType:"CodeBlock"},`\nimplementation 'love.forte.simbot.component:simbot-component-kook-api:${p.i}' // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(o.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,r.kt)(i.Z,{language:"xml",mdxType:"CodeBlock"},`\n\n love.forte.simbot.component\n \x3c!-- \u5728Maven\u4e2d\u4f7f\u7528 '-jvm' \u540e\u7f00\u6765\u9009\u62e9\u4f7f\u7528JVM\u5e73\u53f0\u5e93 --\x3e\n simbot-component-kook-api-jvm\n \x3c!-- \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases --\x3e\n ${p.i}\n\n`.trim()))),(0,r.kt)("admonition",{title:"\u7248\u672c\u53c2\u8003",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"\u7248\u672c\u53ef\u524d\u5f80 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,r.kt)("strong",{parentName:"a"},"Releases"))," \u67e5\u770b\u5e76\u9009\u62e9\u3002")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"2. \u9009\u62e9\u5e76\u5b89\u88c5\u5408\u9002\u7684 Ktor Client \u4f9d\u8d56")),(0,r.kt)("p",null,"\u524d\u5f80 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html"},"Ktor: HTTP client Engines")," \u9009\u62e9\u5e76\u4f7f\u7528\u4e00\u4e2a\u5408\u9002\u7684 HTTP Client \u5f15\u64ce\u3002"),(0,r.kt)("p",null,"\u4f8b\u5982\uff1a"),(0,r.kt)(l.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"Gradle Kotlin DSL",label:"Kotlin/JVM",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,r.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,r.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,r.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Kotlin/JS",label:"Kotlin/JS",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#js"},(0,r.kt)("inlineCode",{parentName:"a"},"JS"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-js:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Kotlin/N",label:"Kotlin/Native",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)(l.Z,{groupId:"use-dependency-kt-native",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"WinHttp",label:"WinHttp",mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"see ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#winhttp"},(0,r.kt)("inlineCode",{parentName:"a"},"WinHttp")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-winhttp:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Darwin",label:"Darwin",mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"see ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#darwin"},(0,r.kt)("inlineCode",{parentName:"a"},"Darwin")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-darwin:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Curl",label:"Curl",mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"see ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#curl"},(0,r.kt)("inlineCode",{parentName:"a"},"Curl")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-curl:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))))),(0,r.kt)(o.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,r.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-cio-jvm\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")),(0,r.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,r.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-xml"},"\n io.ktor\n ktor-client-java\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")))),(0,r.kt)("h2",{id:"\u4f7f\u7528"},"\u4f7f\u7528"),(0,r.kt)("admonition",{title:"\u592a\u591a\u4e86",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4e0d\u4f1a\u5728\u6b64\u5904\u4e00\u4e00\u5217\u4e3e\u6240\u6709\u7684API\u505a\u6f14\u793a\uff0c\u8fd9\u4e0d\u592a\u73b0\u5b9e\u3002\n\u6240\u6709\u7684API\u90fd\u5728\u5305\u8def\u5f84 ",(0,r.kt)("inlineCode",{parentName:"p"},"love.forte.simbot.kook.api")," \u4e0b\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love/"},"API\u6587\u6863"),"\n\u6216\u67e5\u9605\u6e90\u7801\u7684\u65b9\u5f0f\u6765\u5bfb\u627e\u4f60\u6240\u9700\u8981\u7684API\u3002"),(0,r.kt)("p",{parentName:"admonition"},"API\u5305\u88c5\u7c7b\u7684\u547d\u540d\u4e5f\u5b58\u5728\u4e00\u5b9a\u7684\u89c4\u5f8b\uff0c\u6bd4\u5982\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u83b7\u53d6xxx\u5217\u8868")," \u7684API\u901a\u5e38\u4f1a\u88ab\u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"GetXxxListApi"),"\u3002\n\u5b83\u4eec\u7684\u547d\u540d\u5927\u90e8\u5206\u4e0e\u5176\u5bf9\u5e94\u7684\u5b9e\u9645API\u5730\u5740\u6709\u5f88\u5927\u5173\u7cfb\u3002"),(0,r.kt)("p",{parentName:"admonition"},"\u4e0b\u6587\u4f1a\u9009\u62e9\u4e00\u5c0f\u90e8\u5206API\u6765\u505a\u793a\u4f8b\u3002")),(0,r.kt)("h3",{id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"},"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"),(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/guild#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%8A%A0%E5%85%A5%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%97%E8%A1%A8"},"\u83b7\u53d6\u5f53\u524d\u7528\u6237(BOT)\u52a0\u5165\u7684\u670d\u52a1\u5668\u5217\u8868"),"\n\u4e3a\u4f8b\u3002"),(0,r.kt)(l.Z,{groupId:"code",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"Kotlin",label:"Kotlin/JVM",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(CIO) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GetGuildListApi.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData: ListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { println("guild: $it") }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n'))),(0,r.kt)(o.Z,{value:"Kotlin/JS",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(Js) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GetGuildListApi.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData: ListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { println("guild: $it") }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n'))),(0,r.kt)(o.Z,{value:"Kotlin/Native",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u6b64\u5904\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"p"},"MingwX64")," \u5e73\u53f0\u73af\u5883\u4e3a\u4f8b\uff1a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(WinHttp) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GetGuildListApi.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData: ListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { println("guild: $it") }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n'))),(0,r.kt)(o.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// 'Bot' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = \"Bot xxxxxxxxxx\";\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nvar api = GetGuildListApi.create();\n\n// requestDataBlocking \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nvar guildListData = api.requestDataBlocking(client, authorization);\nfor (var guild : guildListData) {\n System.out.println(guild);\n}\n"))),(0,r.kt)(o.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = "Bot xxxxxxxxxx";\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nvar api = GetGuildListApi.create();\n\n// requestDataAsync \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nCompletableFuture> guildListDataFuture = api.requestDataAsync(client, authorization);\n\n// Use the future, or handle exception\nguildListDataFuture.thenAccept(listData -> {\n for (var guild : listData) {\n System.out.println(guild);\n }\n}).exceptionally(err -> {\n logger.error("err!", err);\n return null;\n});\n')))))}h.isMDXComponent=!0},2965:t=>{t.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[12],{5162:(t,e,a)=>{a.d(e,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(t){let{children:e,hidden:a,className:o}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>N});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),i=a(6550),p=a(1980),u=a(7392),s=a(12);function c(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function d(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??c(a);return function(t){const e=(0,u.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[e,a])}function m(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function k(t){let{queryString:e=!1,groupId:a}=t;const n=(0,i.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function v(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=d(t),[o,i]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!m({value:e,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[p,u]=k({queryString:a,groupId:n}),[c,v]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,s.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),h=(()=>{const t=p??c;return m({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{h&&i(h)}),[h]);return{selectedValue:o,selectValue:(0,r.useCallback)((t=>{if(!m({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);i(t),u(t),v(t)}),[u,v,l]),tabValues:l}}var h=a(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(t){let{className:e,block:a,selectedValue:i,selectValue:p,tabValues:u}=t;const s=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.o5)(),d=t=>{const e=t.currentTarget,a=s.indexOf(e),n=u[a].value;n!==i&&(c(e),p(n))},m=t=>{let e=null;switch(t.key){case"Enter":d(t);break;case"ArrowRight":{const a=s.indexOf(t.currentTarget)+1;e=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(t.currentTarget)-1;e=s[a]??s[s.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},u.map((t=>{let{value:e,label:a,attributes:o}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===e?0:-1,"aria-selected":i===e,key:e,ref:t=>s.push(t),onKeyDown:m,onClick:d},o,{className:(0,l.Z)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":i===e})}),a??e)})))}function f(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function x(t){const e=v(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},r.createElement(b,(0,n.Z)({},t,e)),r.createElement(f,(0,n.Z)({},t,e)))}function N(t){const e=(0,h.Z)();return r.createElement(x,(0,n.Z)({key:String(e)},t))}},3825:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>u,metadata:()=>c,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162),i=a(614),p=a(2965);const u={title:"\u4f7f\u7528API",sidebar_position:2},s=void 0,c={unversionedId:"quick-start/api",id:"quick-start/api",title:"\u4f7f\u7528API",description:"API\u6a21\u5757\u57fa\u4e8e KMP \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 JVM\u3001JS\u3001Native \u5e73\u53f0\uff0c\u4f7f\u7528 Ktor \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002",source:"@site/docs/quick-start/api.md",sourceDirName:"quick-start",slug:"/quick-start/api",permalink:"/docs/quick-start/api",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/api.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:2,frontMatter:{title:"\u4f7f\u7528API",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/quick-start/"},next:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/quick-start/stdlib"}},d={},m=[{value:"\u5b89\u88c5",id:"\u5b89\u88c5",level:2},{value:"\u4f7f\u7528",id:"\u4f7f\u7528",level:2},{value:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868",level:3}],k={toc:m},v="wrapper";function h(t){let{components:e,...a}=t;return(0,r.kt)(v,(0,n.Z)({},k,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"API\u6a21\u5757\u57fa\u4e8e ",(0,r.kt)("strong",{parentName:"p"},"KMP")," \u6784\u5efa\u9879\u76ee\uff0c\u652f\u6301 ",(0,r.kt)("strong",{parentName:"p"},"JVM\u3001JS\u3001Native")," \u5e73\u53f0\uff0c\u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/"},(0,r.kt)("strong",{parentName:"a"},"Ktor"))," \u4f5c\u4e3aAPI\u8bf7\u6c42\uff08http\u8bf7\u6c42\uff09\u7684\u89e3\u51b3\u65b9\u6848\u3002"),(0,r.kt)("p",null,"API\u6a21\u5757\u662f",(0,r.kt)("strong",{parentName:"p"},"\u72ec\u7acb\u7684"),"\uff0c\u5b9e\u8d28\u4e0a\u5e76\u4e0d\u4f9d\u8d56 simbot API\u3002\u4f60\u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u5b83\u4f5c\u4e3a ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/"},"KOOK API")," \u7684\u5e95\u5c42\u5c01\u88c5\u5e93\u3002"),(0,r.kt)("h2",{id:"\u5b89\u88c5"},"\u5b89\u88c5"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"1. \u5b89\u88c5 kook-api \u4f9d\u8d56")),(0,r.kt)(l.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"Gradle Kotlin DSL",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,r.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,r.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,r.kt)(i.Z,{language:"kotlin",mdxType:"CodeBlock"},'\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\n kotlin("jvm") version "\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c"\n // \u6216 multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n // \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n'.trim()),(0,r.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,r.kt)(i.Z,{language:"kotlin",mdxType:"CodeBlock"},`\nimplementation("love.forte.simbot.component:simbot-component-kook-api:${p.i}") // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(o.Z,{value:"Gradle Groovy",attributes:{"data-value":"Gradle"},mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Gradle")," \u7684 ",(0,r.kt)("a",{parentName:"p",href:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin"},(0,r.kt)("inlineCode",{parentName:"a"},"Kotlin")," \u63d2\u4ef6"),"\uff1a"),(0,r.kt)(i.Z,{language:"gradle",mdxType:"CodeBlock"},"\n// \u4f7f\u7528 Gradle \u7684 kotlin \u63d2\u4ef6\u6765\u5141\u8bb8\u81ea\u52a8\u9009\u62e9\u4f9d\u8d56\u7684\u5bf9\u5e94\u5e73\u53f0\uff0c\u6bd4\u5982JVM\u6216JS\u7b49\u3002\nplugin {\n id 'org.jetbrains.kotlin.jvm' version '\u5408\u9002\u4e14\u8f83\u65b0\u7684\u7248\u672c'\n // \u6216 org.jetbrains.kotlin.multiplatform, \u5982\u679c\u4f60\u4f7f\u7528\u591a\u5e73\u53f0\u7684\u8bdd\n // \u5982\u679c\u4f60\u4f7f\u7528 Java\uff0c\u4e5f\u6700\u597d\u6dfb\u52a0\u6b64\u63d2\u4ef6\uff0c\u56e0\u6b64\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u81ea\u52a8\u9009\u62e9 -jvm \u7684\u4f9d\u8d56\uff0c\u800c\u4e0d\u9700\u8981\u4e3b\u52a8\u6dfb\u52a0\u6b64\u540e\u7f00\n}\n".trim()),(0,r.kt)("p",null,"\u4f9d\u8d56\uff1a"),(0,r.kt)(i.Z,{language:"gradle",mdxType:"CodeBlock"},`\nimplementation 'love.forte.simbot.component:simbot-component-kook-api:${p.i}' // \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases\n`.trim())),(0,r.kt)(o.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,r.kt)(i.Z,{language:"xml",mdxType:"CodeBlock"},`\n\n love.forte.simbot.component\n \x3c!-- \u5728Maven\u4e2d\u4f7f\u7528 '-jvm' \u540e\u7f00\u6765\u9009\u62e9\u4f7f\u7528JVM\u5e73\u53f0\u5e93 --\x3e\n simbot-component-kook-api-jvm\n \x3c!-- \u7248\u672c\u53c2\u8003\u4e0b\u6587\u6240\u8ff0\u7684 Releases --\x3e\n ${p.i}\n\n`.trim()))),(0,r.kt)("admonition",{title:"\u7248\u672c\u53c2\u8003",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"\u7248\u672c\u53ef\u524d\u5f80 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,r.kt)("strong",{parentName:"a"},"Releases"))," \u67e5\u770b\u5e76\u9009\u62e9\u3002")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"2. \u9009\u62e9\u5e76\u5b89\u88c5\u5408\u9002\u7684 Ktor Client \u4f9d\u8d56")),(0,r.kt)("p",null,"\u524d\u5f80 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html"},"Ktor: HTTP client Engines")," \u9009\u62e9\u5e76\u4f7f\u7528\u4e00\u4e2a\u5408\u9002\u7684 HTTP Client \u5f15\u64ce\u3002"),(0,r.kt)("p",null,"\u4f8b\u5982\uff1a"),(0,r.kt)(l.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"Gradle Kotlin DSL",label:"Kotlin/JVM",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,r.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-cio:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n')),(0,r.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,r.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u6216\u4f7f\u7528 runtimeOnly\nimplementation("io.ktor:ktor-client-java:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Kotlin/JS",label:"Kotlin/JS",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#js"},(0,r.kt)("inlineCode",{parentName:"a"},"JS"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-js:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Kotlin/N",label:"Kotlin/Native",attributes:{"data-value":"Kts"},mdxType:"TabItem"},(0,r.kt)(l.Z,{groupId:"use-dependency-kt-native",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"WinHttp",label:"WinHttp",mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"see ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#winhttp"},(0,r.kt)("inlineCode",{parentName:"a"},"WinHttp")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-winhttp:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Darwin",label:"Darwin",mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"see ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#darwin"},(0,r.kt)("inlineCode",{parentName:"a"},"Darwin")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-darwin:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))),(0,r.kt)(o.Z,{value:"Curl",label:"Curl",mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"see ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#curl"},(0,r.kt)("inlineCode",{parentName:"a"},"Curl")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'implementation("io.ktor:ktor-client-curl:<\u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c>")\n'))))),(0,r.kt)(o.Z,{value:"Maven",attributes:{"data-value":"Maven"},mdxType:"TabItem"},(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#cio"},(0,r.kt)("inlineCode",{parentName:"a"},"CIO"))," \u5f15\u64ce\u4e3a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-xml"},"\n\n io.ktor\n ktor-client-cio-jvm\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")),(0,r.kt)("p",null,"\u6216\u8005\u5982\u679c Java \u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"p"},">= Java11"),", \u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"https://ktor.io/docs/http-client-engines.html#java"},(0,r.kt)("inlineCode",{parentName:"a"},"Java"))," \u5f15\u64ce\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-xml"},"\n io.ktor\n ktor-client-java\n \u5408\u9002\u4e14\u8f83\u65b0\u7684Ktor\u7248\u672c\n \x3c!-- \u5728JVM\u5e73\u53f0\u4e0b\uff0c\u5982\u679c\u53ea\u6709\u4e00\u4e2a\u5f15\u64ce\u4f9d\u8d56\uff0c\u5219\u9ed8\u8ba4\u4f1a\u5c1d\u8bd5\u901a\u8fc7 SPI \u52a0\u8f7d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528 runtime \u4f5c\u7528\u57df --\x3e\n \x3c!-- \u5982\u679c\u60f3\u8981\u624b\u52a8\u6307\u5b9a\u5f15\u64ce\u6216\u914d\u7f6e\uff0c\u79fb\u9664\u6b64\u4f5c\u7528\u57df\u914d\u7f6e --\x3e\n runtime\n\n")))),(0,r.kt)("h2",{id:"\u4f7f\u7528"},"\u4f7f\u7528"),(0,r.kt)("admonition",{title:"\u592a\u591a\u4e86",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4e0d\u4f1a\u5728\u6b64\u5904\u4e00\u4e00\u5217\u4e3e\u6240\u6709\u7684API\u505a\u6f14\u793a\uff0c\u8fd9\u4e0d\u592a\u73b0\u5b9e\u3002\n\u6240\u6709\u7684API\u90fd\u5728\u5305\u8def\u5f84 ",(0,r.kt)("inlineCode",{parentName:"p"},"love.forte.simbot.kook.api")," \u4e0b\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love/"},"API\u6587\u6863"),"\n\u6216\u67e5\u9605\u6e90\u7801\u7684\u65b9\u5f0f\u6765\u5bfb\u627e\u4f60\u6240\u9700\u8981\u7684API\u3002"),(0,r.kt)("p",{parentName:"admonition"},"API\u5305\u88c5\u7c7b\u7684\u547d\u540d\u4e5f\u5b58\u5728\u4e00\u5b9a\u7684\u89c4\u5f8b\uff0c\u6bd4\u5982\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u83b7\u53d6xxx\u5217\u8868")," \u7684API\u901a\u5e38\u4f1a\u88ab\u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"GetXxxListApi"),"\u3002\n\u5b83\u4eec\u7684\u547d\u540d\u5927\u90e8\u5206\u4e0e\u5176\u5bf9\u5e94\u7684\u5b9e\u9645API\u5730\u5740\u6709\u5f88\u5927\u5173\u7cfb\u3002"),(0,r.kt)("p",{parentName:"admonition"},"\u4e0b\u6587\u4f1a\u9009\u62e9\u4e00\u5c0f\u90e8\u5206API\u6765\u505a\u793a\u4f8b\u3002")),(0,r.kt)("h3",{id:"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"},"\u83b7\u53d6\u7528\u6237\u9891\u9053\u670d\u52a1\u5668\u5217\u8868"),(0,r.kt)("p",null,"\u4ee5 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/guild#%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%8A%A0%E5%85%A5%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%97%E8%A1%A8"},"\u83b7\u53d6\u5f53\u524d\u7528\u6237(BOT)\u52a0\u5165\u7684\u670d\u52a1\u5668\u5217\u8868"),"\n\u4e3a\u4f8b\u3002"),(0,r.kt)(l.Z,{groupId:"code",mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"Kotlin",label:"Kotlin/JVM",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(CIO) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GetGuildListApi.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData: ListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { println("guild: $it") }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n'))),(0,r.kt)(o.Z,{value:"Kotlin/JS",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(Js) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GetGuildListApi.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData: ListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { println("guild: $it") }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n'))),(0,r.kt)(o.Z,{value:"Kotlin/Native",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u6b64\u5904\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"p"},"MingwX64")," \u5e73\u53f0\u73af\u5883\u4e3a\u4f8b\uff1a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(WinHttp) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = GetGuildListApi.create()\n\n// request data \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nval guildListData: ListData = api.requestData(client, authorization)\n\nguildListData.items.forEach { println("guild: $it") }\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5 guildListData.forEach { ... }\n'))),(0,r.kt)(o.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},"// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// 'Bot' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = \"Bot xxxxxxxxxx\";\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nvar api = GetGuildListApi.create();\n\n// requestDataBlocking \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nvar guildListData = api.requestDataBlocking(client, authorization);\nfor (var guild : guildListData) {\n System.out.println(guild);\n}\n"))),(0,r.kt)(o.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-java"},'// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = "Bot xxxxxxxxxx";\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nvar api = GetGuildListApi.create();\n\n// requestDataAsync \u4f1a\u68c0\u6d4bresult\uff0c\u7136\u540e\u5c06\u771f\u6b63\u7684data\u7ed3\u679c\u8fd4\u56de (\u6216\u5728\u9a8c\u8bc1\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\u629b\u51fa\u5f02\u5e38)\nCompletableFuture> guildListDataFuture = api.requestDataAsync(client, authorization);\n\n// Use the future, or handle exception\nguildListDataFuture.thenAccept(listData -> {\n for (var guild : listData) {\n System.out.println(guild);\n }\n}).exceptionally(err -> {\n logger.error("err!", err);\n return null;\n});\n')))))}h.isMDXComponent=!0},2965:t=>{t.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file diff --git a/assets/js/644ef8b6.6a220415.js b/assets/js/644ef8b6.6a7a1607.js similarity index 99% rename from assets/js/644ef8b6.6a220415.js rename to assets/js/644ef8b6.6a7a1607.js index 40dce93f..d3aa4edf 100644 --- a/assets/js/644ef8b6.6a220415.js +++ b/assets/js/644ef8b6.6a7a1607.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[77],{5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),o=n(6010);const r={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>T});var a=n(7462),o=n(7294),r=n(6010),i=n(2466),l=n(6550),s=n(1980),p=n(7392),m=n(12);function u(e){return function(e){return o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:o}}=e;return{value:t,label:n,attributes:a,default:o}}))}function c(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,p.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function b(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const a=(0,l.k6)(),r=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(r),(0,o.useCallback)((e=>{if(!r)return;const t=new URLSearchParams(a.location.search);t.set(r,e),a.replace({...a.location,search:t.toString()})}),[r,a])]}function k(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,r=c(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!b({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:r}))),[s,p]=d({queryString:n,groupId:a}),[u,k]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,r]=(0,m.Nk)(n);return[a,(0,o.useCallback)((e=>{n&&r.set(e)}),[n,r])]}({groupId:a}),v=(()=>{const e=s??u;return b({value:e,tabValues:r})?e:null})();(0,o.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!b({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),p(e),k(e)}),[p,k,r]),tabValues:r}}var v=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(e){let{className:t,block:n,selectedValue:l,selectValue:s,tabValues:p}=e;const m=[],{blockElementScrollPositionUntilNextRender:u}=(0,i.o5)(),c=e=>{const t=e.currentTarget,n=m.indexOf(t),a=p[n].value;a!==l&&(u(t),s(a))},b=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=m.indexOf(e.currentTarget)+1;t=m[n]??m[0];break}case"ArrowLeft":{const n=m.indexOf(e.currentTarget)-1;t=m[n]??m[m.length-1];break}}t?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},p.map((e=>{let{value:t,label:n,attributes:i}=e;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>m.push(e),onKeyDown:b,onClick:c},i,{className:(0,r.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function h(e){let{lazy:t,children:n,selectedValue:a}=e;const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=r.find((e=>e.props.value===a));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function N(e){const t=k(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",g.tabList)},o.createElement(f,(0,a.Z)({},e,t)),o.createElement(h,(0,a.Z)({},e,t)))}function T(e){const t=(0,v.Z)();return o.createElement(N,(0,a.Z)({key:String(t)},e))}},6743:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>m,default:()=>v,frontMatter:()=>p,metadata:()=>u,toc:()=>b});var a=n(7462),o=(n(7294),n(3905)),r=n(4866),i=n(5162),l=n(614),s=n(2965);const p={title:"\u4f7f\u7528SpringBoot",sidebar_position:4},m=void 0,u={unversionedId:"quick-start/spring-boot",id:"version-3.0.0.0-alpha.7/quick-start/spring-boot",title:"\u4f7f\u7528SpringBoot",description:"\u524d\u8a00",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/spring-boot.md",sourceDirName:"quick-start",slug:"/quick-start/spring-boot",permalink:"/docs/3.0.0.0-alpha.7/quick-start/spring-boot",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/spring-boot.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:4,frontMatter:{title:"\u4f7f\u7528SpringBoot",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/simbot-core"},next:{title:"BOT\u914d\u7f6e\u6587\u4ef6",permalink:"/docs/3.0.0.0-alpha.7/bot-config/"}},c={},b=[{value:"\u524d\u8a00",id:"\u524d\u8a00",level:2},{value:"\u524d\u63d0\u51c6\u5907",id:"\u524d\u63d0\u51c6\u5907",level:2},{value:"\u9879\u76ee\u6784\u5efa",id:"\u9879\u76ee\u6784\u5efa",level:2},{value:"BOT\u914d\u7f6e",id:"bot\u914d\u7f6e",level:2},{value:"\u542f\u52a8\u7c7b",id:"\u542f\u52a8\u7c7b",level:2},{value:"\u76d1\u542c\u4e8b\u4ef6",id:"\u76d1\u542c\u4e8b\u4ef6",level:2},{value:"\u542f\u52a8",id:"\u542f\u52a8",level:2},{value:"\u66f4\u591a",id:"\u66f4\u591a",level:2}],d={toc:b},k="wrapper";function v(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u524d\u8a00"},"\u524d\u8a00"),(0,o.kt)("p",null,"\u672c\u7f16\u6587\u6863\u4ecb\u7ecd\u5728JVM\u73af\u5883\u4e0b\u4f7f\u7528:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simboot-core-spring-boot-starter")," ",(0,o.kt)("em",{parentName:"li"},"(",(0,o.kt)("inlineCode",{parentName:"em"},"simbot3")," \u7684 Spring Boot Starter)")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simbot-component-kook-core")," ",(0,o.kt)("em",{parentName:"li"},"(",(0,o.kt)("inlineCode",{parentName:"em"},"simbot3")," KOOK\u7ec4\u4ef6)"))),(0,o.kt)("p",null,"\u6765\u7f16\u5199\u4e00\u4e2aKOOK\u673a\u5668\u4eba\u3002"),(0,o.kt)("h2",{id:"\u524d\u63d0\u51c6\u5907"},"\u524d\u63d0\u51c6\u5907"),(0,o.kt)("p",null,"\u9996\u5148\u4f60\u5e94\u5f53\u51c6\u5907\u81f3\u5c11\u4e00\u4e2a\u53ef\u7528\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u673a\u5668\u4eba")," \u3002"),(0,o.kt)("h2",{id:"\u9879\u76ee\u6784\u5efa"},"\u9879\u76ee\u6784\u5efa"),(0,o.kt)("p",null,"\u9996\u5148\u51c6\u5907\u4e00\u4e2aSpringBoot\u9879\u76ee\u3002\u53ef\u4ee5\u8003\u8651\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://start.spring.io"},"start.spring.io")," \u6216\u501f\u52a9IDE\u7b49\u5de5\u5177\u3002"),(0,o.kt)("p",null,"\u7136\u540e",(0,o.kt)("strong",{parentName:"p"},"\u989d\u5916\u6dfb\u52a0"),"\u4e24\u4e2a\u6211\u4eec\u9700\u8981\u7684\u4f9d\u8d56\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.boot:simboot-core-spring-boot-starter")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simpler-robot/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.component:simbot-component-kook-core")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")")),(0,o.kt)("admonition",{title:"\u4fdd\u6301\u4f4f",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u6ce8\u610f\uff0c\u5728\u4f7f\u7528 Spring Boot \u7684\u65f6\u5019\u4f60\u9700\u8981\u4e00\u4e9b\u80fd\u591f\u4f7f\u7a0b\u5e8f\u4fdd\u6301\u8fd0\u884c\u7684\u7ec4\u4ef6\uff0c\u4f8b\u5982\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"spring-web")," \u542f\u7528\u4e00\u4e2a\u670d\u52a1\u5668\uff0c\u5426\u5219\u7a0b\u5e8f\u53ef\u80fd\u4f1a\u81ea\u52a8\u7ec8\u6b62\u3002\n\u56e0\u4e3asimbot\u7684 starter \u5e76\u4e0d\u63d0\u4f9b\u7ef4\u6301\u7a0b\u5e8f\u8fd0\u884c\u7684\u80fd\u529b\u3002")),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\n// simbot core starter \nimplementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION") // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6 \nimplementation("love.forte.simbot.component:simbot-component-kook-core:${s.i}") // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Gradle Groovy",mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\n// simbot core starter\nimplementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6\nimplementation 'love.forte.simbot.component:simbot-component-kook-core:${s.i}' // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Maven",mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\x3c!-- simbot core starter --\x3e\n\n love.forte.simbot.boot\n simboot-core-spring-boot-starter\n \x3c!-- \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n \${SIMBOT_VERSION}\n\n\x3c!-- KOOK\u7ec4\u4ef6 --\x3e\n\n love.forte.simbot.component\n simbot-component-kook-core\n \x3c!-- \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n ${s.i}\n\n`.trim()))),(0,o.kt)("h2",{id:"bot\u914d\u7f6e"},"BOT\u914d\u7f6e"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u5728\u9879\u76ee",(0,o.kt)("strong",{parentName:"p"},"\u8d44\u6e90\u6587\u4ef6"),"\u76ee\u5f55\u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot-bots")," \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u914d\u7f6ebot\u7684\u914d\u7f6e\u6587\u4ef6 ",(0,o.kt)("inlineCode",{parentName:"p"},"xxx.bot.json")," ( \u6587\u4ef6\u540d\u968f\u610f\uff0c\u6269\u5c55\u540d\u5e94\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},".bot")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},".bot.json")," ) \u3002"),(0,o.kt)("p",null,"\u914d\u7f6e\u6587\u4ef6\u7684\u5177\u4f53\u5185\u5bb9\u5219\u53c2\u8003\u7ae0\u8282 ",(0,o.kt)("a",{parentName:"p",href:"../bot-config"},(0,o.kt)("strong",{parentName:"a"},"BOT\u914d\u7f6e\u6587\u4ef6"))," \u3002"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"\u6b64\u8def\u5f84\u4ee5 IDEA \u7684\u9879\u76ee\u7ed3\u6784\u98ce\u683c\u4e3a\u51c6\uff0c\u5982\u679c\u662f\u5176\u4ed6IDE\uff0c\u4f7f\u7528\u5bf9\u5e94\u7684\u8d44\u6e90\u6587\u4ef6\u76ee\u5f55\u3002")),(0,o.kt)("pre",{parentName:"blockquote"},(0,o.kt)("code",{parentName:"pre"},"${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json\n"))),(0,o.kt)("admonition",{title:"\u53ef\u914d\u7f6e",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u60f3\u8981\u4fee\u6539\u6b64\u8def\u5f84\uff0c\u53ef\u5728 Spring Boot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u8fdb\u884c\u914d\u7f6e\uff1a"),(0,o.kt)(r.Z,{groupId:"spring-boot-config",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"properties",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-properties"},"# \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n# \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n# \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\nsimbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot*\n"))),(0,o.kt)(i.Z,{value:"YAML",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"simbot:\n # \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n # \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n # \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\n bot-configuration-resources:\n - 'classpath:simbot-bots/*.bot*'\n"))))),(0,o.kt)("h2",{id:"\u542f\u52a8\u7c7b"},"\u542f\u52a8\u7c7b"),(0,o.kt)("p",null,"\u50cf\u6bcf\u4e00\u4e2a Spring Boot \u5e94\u7528\u4e00\u6837\uff0c\u4f60\u9700\u8981\u4e00\u4e2a\u542f\u52a8\u7c7b\uff0c\u5e76\u901a\u8fc7\u6807\u6ce8 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u6765\u542f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot")," \uff1a"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.App.kt'",title:"'com.example.App.kt'"},"@EnableSimbot\n@SpringBootApplication\nclass App\n\nfun main(vararg args: String) {\n runApplication(args = args)\n}\n"))),(0,o.kt)(i.Z,{value:"Java",mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u65e9\u6709\u9884\u9632",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u4f60\u5728Java\u4e2d\u9047\u5230\u4e86\u65e0\u6cd5\u5f15\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u7b49\u60c5\u51b5\uff0c\u6216\u8bb8\u53ef\u4ee5\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/faq/%E5%8C%85%E5%BC%95%E7%94%A8%E5%BC%82%E5%B8%B8/"},(0,o.kt)("strong",{parentName:"a"},"\u8fd9\u7bc7FAQ")),"\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.App.java'",title:"'com.example.App.java'"},"@EnableSimbot\n@SpringBootApplication\npublic class App {\n public static void main(String[] args) {\n SpringApplication.run(App.class, args);\n }\n}\n")))),(0,o.kt)("h2",{id:"\u76d1\u542c\u4e8b\u4ef6"},"\u76d1\u542c\u4e8b\u4ef6"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\u5c31\u662f\u903b\u8f91\u4ee3\u7801\u6240\u5728\u7684\u5730\u65b9\u4e86\uff0c\u7f16\u5199\u4e00\u4e2a\u76d1\u542c\u51fd\u6570\u5e76\u76d1\u542c\u4e00\u4e2a\u4e8b\u4ef6\u3002"),(0,o.kt)("p",null,"\u6b64\u5904\u6211\u4eec\u76d1\u542c ",(0,o.kt)("inlineCode",{parentName:"p"},"ChannelMessageEvent"),"\uff0c\u4e5f\u5c31\u662f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"\u5b50\u9891\u9053\u7684\u6d88\u606f\u4e8b\u4ef6")),"\u3002"),(0,o.kt)("p",null,"\u5047\u8bbe\uff1a\u8981\u6c42bot\u5fc5\u987b",(0,o.kt)("strong",{parentName:"p"},"\u88abAT"),"\uff0c\u5e76\u4e14\u8bf4\u4e00\u53e5 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u597d"),"\uff0c\u6b64\u65f6bot\u4f1a",(0,o.kt)("strong",{parentName:"p"},"\u5f15\u7528"),"\u7528\u6237\u53d1\u9001\u7684\u6d88\u606f\u5e76\u56de\u590d ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u4e5f\u597d!")," \uff0c\u7c7b\u4f3c\u4e8e\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"\u7528\u6237: \n@BOT \u4f60\u597d\n\nBOT:\n> \u7528\u6237: @BOT \u4f60\u597d\n\u4f60\u4e5f\u597d! \n")),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.listener.ExampleListener.kt'",title:"'com.example.listener.ExampleListener.kt'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n\n@Component\nclass ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n suspend fun onChannelMessage(event: ChannelMessageEvent) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n event.reply("\u4f60\u4e5f\u597d!")\n }\n}\n\n\n'))),(0,o.kt)(i.Z,{value:"Java",label:"Java Blocking",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public void onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n \n // Java\u4e2d\u7684\u963b\u585e\u5f0fAPI\n event.replyBlocking("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Async",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n \n // \u5c06 CompletableFuture \u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return event.replyAsync("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Reactive",mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u6709\u8981\u6c42",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u8fd4\u56de\u503c\u662f\u9700\u8981\u7b2c\u4e09\u65b9\u5e93\u7684\u54cd\u5e94\u5f0f\u7c7b\u578b\uff0c\u90a3\u4e48\u4f60\u7684\u9879\u76ee\u73af\u5883\u4f9d\u8d56\u4e2d\u5fc5\u987b\u5b58\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Kotlin courotines")," \u5bf9\u5176\u7684\u652f\u6301\u5e93\u624d\u53ef\u4f7f\u7528\u3002\n\u4f60\u53ef\u4ee5\u53c2\u8003\u6587\u6863\u4e2d ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/basic/event-listener#%E5%8F%AF%E5%93%8D%E5%BA%94%E5%BC%8F%E7%9A%84%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%9C"},(0,o.kt)("em",{parentName:"a"},"\u54cd\u5e94\u5f0f\u7684\u5904\u7406\u7ed3\u679c"))," \u7684\u5185\u5bb9\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public Mono onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n \n // \u5c06 Mono \u7b49\u54cd\u5e94\u5f0f\u7c7b\u578b\u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return Mono.fromCompletionStage(event.replyAsync("\u4f60\u4e5f\u597d!"));\n }\n \n}\n')))),(0,o.kt)("h2",{id:"\u542f\u52a8"},"\u542f\u52a8"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u542f\u52a8\u7a0b\u5e8f\u5e76\u5728\u4f60\u7684\u6c99\u7bb1\u9891\u9053\u4e2d@\u5b83\u8bd5\u8bd5\u770b\u5427\u3002"),(0,o.kt)("p",null,"\u5f53\u7136\uff0c\u5982\u679c\u9047\u5230\u4e86\u9884\u671f\u5916\u7684\u95ee\u9898\u4e5f\u4e0d\u8981\u614c\uff0c\u79ef\u6781\u53cd\u9988\u95ee\u9898\u624d\u80fd\u4f7f\u6211\u4eec\u53d8\u5f97\u66f4\u597d\uff0c\u53ef\u4ee5\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot/issues"},"Issues")," \u53cd\u9988\u95ee\u9898\u3001",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u95ee\u3002"),(0,o.kt)("h2",{id:"\u66f4\u591a"},"\u66f4\u591a"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love"},"simbot3\u5b98\u7f51")," \u6765\u4e86\u89e3simbot3\u7684\u5404",(0,o.kt)("strong",{parentName:"p"},"\u901a\u7528\u80fd\u529b"),"\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love"},"API\u6587\u6863")," \u6216\u901a\u8fc7\u6e90\u7801\u7ffb\u9605\u3001\u641c\u7d22\u5e76\u4e86\u89e3\u5177\u4f53\u7684\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u60d1\u3002"),(0,o.kt)("p",null,"\u6700\u7ec8\uff0c\u672c\u624b\u518c\u7f51\u7ad9\u53ef\u80fd\u4f1a\u65f6\u4e0d\u65f6\u7684\u66f4\u65b0\u4e00\u4e9b\u5b9e\u7528\u6027\u7684\u5e94\u7528\u6587\u6863\u3002"),(0,o.kt)("admonition",{title:"\u7cbe\u529b\u6709\u9650 ",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u7f16\u5199\u4f7f\u7528\u624b\u518c\u662f\u6781\u5176\u6d88\u8017\u7cbe\u529b\u7684\u4e8b\u60c5\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4f1a\u9996\u5148\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"\u6e90\u7801\u7684\u6587\u6863\u6ce8\u91ca"),"\u7684\u5168\u9762\u6027\uff0c\u540c\u65f6\u7531\u6b64\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"API\u6587\u6863"),"\u7684\u8bf4\u660e\u59cb\u7ec8\u662f\u7d27\u968f\u6e90\u7801\u751f\u6210\u800c\u5b8c\u6574\u7684\u3002\uff08API\u6587\u6863\u4f1a\u968f\u7740\u7248\u672c\u7684\u53d1\u5e03\u81ea\u52a8\u90e8\u7f72\uff09"),(0,o.kt)("p",{parentName:"admonition"},"\u5176\u6b21\uff0c\u6211\u4eec\u4f1a\u5c3d\u53ef\u80fd\u7684\u53ca\u65f6\u5e76\u5168\u9762\u7684\u56de\u590d",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},(0,o.kt)("strong",{parentName:"a"},"\u793e\u533a")),"\u4e2d\u7684\u76f8\u5173\u7591\u60d1\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6700\u7ec8\uff0c\u6211\u4eec\u624d\u4f1a\u8003\u8651\u5b8c\u5584\u672c\u624b\u518c\u7f51\u7ad9\u3002")))}v.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[77],{5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),o=n(6010);const r={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>T});var a=n(7462),o=n(7294),r=n(6010),i=n(2466),l=n(6550),s=n(1980),p=n(7392),m=n(12);function u(e){return function(e){return o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:o}}=e;return{value:t,label:n,attributes:a,default:o}}))}function c(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,p.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function b(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function d(e){let{queryString:t=!1,groupId:n}=e;const a=(0,l.k6)(),r=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(r),(0,o.useCallback)((e=>{if(!r)return;const t=new URLSearchParams(a.location.search);t.set(r,e),a.replace({...a.location,search:t.toString()})}),[r,a])]}function k(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,r=c(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!b({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:r}))),[s,p]=d({queryString:n,groupId:a}),[u,k]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,r]=(0,m.Nk)(n);return[a,(0,o.useCallback)((e=>{n&&r.set(e)}),[n,r])]}({groupId:a}),v=(()=>{const e=s??u;return b({value:e,tabValues:r})?e:null})();(0,o.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!b({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),p(e),k(e)}),[p,k,r]),tabValues:r}}var v=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(e){let{className:t,block:n,selectedValue:l,selectValue:s,tabValues:p}=e;const m=[],{blockElementScrollPositionUntilNextRender:u}=(0,i.o5)(),c=e=>{const t=e.currentTarget,n=m.indexOf(t),a=p[n].value;a!==l&&(u(t),s(a))},b=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=m.indexOf(e.currentTarget)+1;t=m[n]??m[0];break}case"ArrowLeft":{const n=m.indexOf(e.currentTarget)-1;t=m[n]??m[m.length-1];break}}t?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},p.map((e=>{let{value:t,label:n,attributes:i}=e;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>m.push(e),onKeyDown:b,onClick:c},i,{className:(0,r.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function h(e){let{lazy:t,children:n,selectedValue:a}=e;const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=r.find((e=>e.props.value===a));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function N(e){const t=k(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",g.tabList)},o.createElement(f,(0,a.Z)({},e,t)),o.createElement(h,(0,a.Z)({},e,t)))}function T(e){const t=(0,v.Z)();return o.createElement(N,(0,a.Z)({key:String(t)},e))}},6743:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>m,default:()=>v,frontMatter:()=>p,metadata:()=>u,toc:()=>b});var a=n(7462),o=(n(7294),n(3905)),r=n(4866),i=n(5162),l=n(614),s=n(2965);const p={title:"\u4f7f\u7528SpringBoot",sidebar_position:4},m=void 0,u={unversionedId:"quick-start/spring-boot",id:"version-3.0.0.0-alpha.7/quick-start/spring-boot",title:"\u4f7f\u7528SpringBoot",description:"\u524d\u8a00",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/spring-boot.md",sourceDirName:"quick-start",slug:"/quick-start/spring-boot",permalink:"/docs/3.0.0.0-alpha.7/quick-start/spring-boot",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/spring-boot.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:4,frontMatter:{title:"\u4f7f\u7528SpringBoot",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",permalink:"/docs/3.0.0.0-alpha.7/quick-start/simbot-core"},next:{title:"BOT\u914d\u7f6e\u6587\u4ef6",permalink:"/docs/3.0.0.0-alpha.7/bot-config/"}},c={},b=[{value:"\u524d\u8a00",id:"\u524d\u8a00",level:2},{value:"\u524d\u63d0\u51c6\u5907",id:"\u524d\u63d0\u51c6\u5907",level:2},{value:"\u9879\u76ee\u6784\u5efa",id:"\u9879\u76ee\u6784\u5efa",level:2},{value:"BOT\u914d\u7f6e",id:"bot\u914d\u7f6e",level:2},{value:"\u542f\u52a8\u7c7b",id:"\u542f\u52a8\u7c7b",level:2},{value:"\u76d1\u542c\u4e8b\u4ef6",id:"\u76d1\u542c\u4e8b\u4ef6",level:2},{value:"\u542f\u52a8",id:"\u542f\u52a8",level:2},{value:"\u66f4\u591a",id:"\u66f4\u591a",level:2}],d={toc:b},k="wrapper";function v(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u524d\u8a00"},"\u524d\u8a00"),(0,o.kt)("p",null,"\u672c\u7f16\u6587\u6863\u4ecb\u7ecd\u5728JVM\u73af\u5883\u4e0b\u4f7f\u7528:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simboot-core-spring-boot-starter")," ",(0,o.kt)("em",{parentName:"li"},"(",(0,o.kt)("inlineCode",{parentName:"em"},"simbot3")," \u7684 Spring Boot Starter)")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"simbot-component-kook-core")," ",(0,o.kt)("em",{parentName:"li"},"(",(0,o.kt)("inlineCode",{parentName:"em"},"simbot3")," KOOK\u7ec4\u4ef6)"))),(0,o.kt)("p",null,"\u6765\u7f16\u5199\u4e00\u4e2aKOOK\u673a\u5668\u4eba\u3002"),(0,o.kt)("h2",{id:"\u524d\u63d0\u51c6\u5907"},"\u524d\u63d0\u51c6\u5907"),(0,o.kt)("p",null,"\u9996\u5148\u4f60\u5e94\u5f53\u51c6\u5907\u81f3\u5c11\u4e00\u4e2a\u53ef\u7528\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u673a\u5668\u4eba")," \u3002"),(0,o.kt)("h2",{id:"\u9879\u76ee\u6784\u5efa"},"\u9879\u76ee\u6784\u5efa"),(0,o.kt)("p",null,"\u9996\u5148\u51c6\u5907\u4e00\u4e2aSpringBoot\u9879\u76ee\u3002\u53ef\u4ee5\u8003\u8651\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://start.spring.io"},"start.spring.io")," \u6216\u501f\u52a9IDE\u7b49\u5de5\u5177\u3002"),(0,o.kt)("p",null,"\u7136\u540e",(0,o.kt)("strong",{parentName:"p"},"\u989d\u5916\u6dfb\u52a0"),"\u4e24\u4e2a\u6211\u4eec\u9700\u8981\u7684\u4f9d\u8d56\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.boot:simboot-core-spring-boot-starter")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simpler-robot/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"love.forte.simbot.component:simbot-component-kook-core")," ",(0,o.kt)("br",null)," (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/simple-robot/simbot-component-kook/releases"},(0,o.kt)("strong",{parentName:"a"},"\u7248\u672c\u53c2\u8003")),")")),(0,o.kt)("admonition",{title:"\u4fdd\u6301\u4f4f",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u6ce8\u610f\uff0c\u5728\u4f7f\u7528 Spring Boot \u7684\u65f6\u5019\u4f60\u9700\u8981\u4e00\u4e9b\u80fd\u591f\u4f7f\u7a0b\u5e8f\u4fdd\u6301\u8fd0\u884c\u7684\u7ec4\u4ef6\uff0c\u4f8b\u5982\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"spring-web")," \u542f\u7528\u4e00\u4e2a\u670d\u52a1\u5668\uff0c\u5426\u5219\u7a0b\u5e8f\u53ef\u80fd\u4f1a\u81ea\u52a8\u7ec8\u6b62\u3002\n\u56e0\u4e3asimbot\u7684 starter \u5e76\u4e0d\u63d0\u4f9b\u7ef4\u6301\u7a0b\u5e8f\u8fd0\u884c\u7684\u80fd\u529b\u3002")),(0,o.kt)(r.Z,{groupId:"use-dependency",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Gradle Kotlin DSL",mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"kotlin",mdxType:"CodeBlock"},`\n// simbot core starter \nimplementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION") // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6 \nimplementation("love.forte.simbot.component:simbot-component-kook-core:${s.i}") // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Gradle Groovy",mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"gradle",mdxType:"CodeBlock"},`\n// simbot core starter\nimplementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n// KOOK\u7ec4\u4ef6\nimplementation 'love.forte.simbot.component:simbot-component-kook-core:${s.i}' // \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5\n`.trim())),(0,o.kt)(i.Z,{value:"Maven",mdxType:"TabItem"},(0,o.kt)(l.Z,{language:"xml",mdxType:"CodeBlock"},`\n\x3c!-- simbot core starter --\x3e\n\n love.forte.simbot.boot\n simboot-core-spring-boot-starter\n \x3c!-- \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n \${SIMBOT_VERSION}\n\n\x3c!-- KOOK\u7ec4\u4ef6 --\x3e\n\n love.forte.simbot.component\n simbot-component-kook-core\n \x3c!-- \u7248\u672c\u8bf7\u53c2\u8003\u524d\u6587\u7684\u53c2\u8003\u94fe\u63a5 --\x3e\n ${s.i}\n\n`.trim()))),(0,o.kt)("h2",{id:"bot\u914d\u7f6e"},"BOT\u914d\u7f6e"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u5728\u9879\u76ee",(0,o.kt)("strong",{parentName:"p"},"\u8d44\u6e90\u6587\u4ef6"),"\u76ee\u5f55\u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot-bots")," \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u914d\u7f6ebot\u7684\u914d\u7f6e\u6587\u4ef6 ",(0,o.kt)("inlineCode",{parentName:"p"},"xxx.bot.json")," ( \u6587\u4ef6\u540d\u968f\u610f\uff0c\u6269\u5c55\u540d\u5e94\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},".bot")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},".bot.json")," ) \u3002"),(0,o.kt)("p",null,"\u914d\u7f6e\u6587\u4ef6\u7684\u5177\u4f53\u5185\u5bb9\u5219\u53c2\u8003\u7ae0\u8282 ",(0,o.kt)("a",{parentName:"p",href:"../bot-config"},(0,o.kt)("strong",{parentName:"a"},"BOT\u914d\u7f6e\u6587\u4ef6"))," \u3002"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},(0,o.kt)("em",{parentName:"p"},"\u6b64\u8def\u5f84\u4ee5 IDEA \u7684\u9879\u76ee\u7ed3\u6784\u98ce\u683c\u4e3a\u51c6\uff0c\u5982\u679c\u662f\u5176\u4ed6IDE\uff0c\u4f7f\u7528\u5bf9\u5e94\u7684\u8d44\u6e90\u6587\u4ef6\u76ee\u5f55\u3002")),(0,o.kt)("pre",{parentName:"blockquote"},(0,o.kt)("code",{parentName:"pre"},"${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json\n"))),(0,o.kt)("admonition",{title:"\u53ef\u914d\u7f6e",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u60f3\u8981\u4fee\u6539\u6b64\u8def\u5f84\uff0c\u53ef\u5728 Spring Boot \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u8fdb\u884c\u914d\u7f6e\uff1a"),(0,o.kt)(r.Z,{groupId:"spring-boot-config",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"properties",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-properties"},"# \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n# \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n# \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\nsimbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot*\n"))),(0,o.kt)(i.Z,{value:"YAML",mdxType:"TabItem"},(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"simbot:\n # \u81ea\u5b9a\u4e49\u914d\u7f6ebot\u8d44\u6e90\u6587\u4ef6\u7684\u626b\u63cf\u8def\u5f84\u3002\n # \u9ed8\u8ba4\u4e3a classpath:simbot-bots/*.bot*\n # \u5982\u679c\u8981\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u53ef\u4ee5\u4f7f\u7528 `file:` \u5f00\u5934\n bot-configuration-resources:\n - 'classpath:simbot-bots/*.bot*'\n"))))),(0,o.kt)("h2",{id:"\u542f\u52a8\u7c7b"},"\u542f\u52a8\u7c7b"),(0,o.kt)("p",null,"\u50cf\u6bcf\u4e00\u4e2a Spring Boot \u5e94\u7528\u4e00\u6837\uff0c\u4f60\u9700\u8981\u4e00\u4e2a\u542f\u52a8\u7c7b\uff0c\u5e76\u901a\u8fc7\u6807\u6ce8 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u6765\u542f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"simbot")," \uff1a"),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.App.kt'",title:"'com.example.App.kt'"},"@EnableSimbot\n@SpringBootApplication\nclass App\n\nfun main(vararg args: String) {\n runApplication(args = args)\n}\n"))),(0,o.kt)(i.Z,{value:"Java",mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u65e9\u6709\u9884\u9632",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u4f60\u5728Java\u4e2d\u9047\u5230\u4e86\u65e0\u6cd5\u5f15\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"@EnableSimbot")," \u7b49\u60c5\u51b5\uff0c\u6216\u8bb8\u53ef\u4ee5\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/faq/%E5%8C%85%E5%BC%95%E7%94%A8%E5%BC%82%E5%B8%B8/"},(0,o.kt)("strong",{parentName:"a"},"\u8fd9\u7bc7FAQ")),"\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.App.java'",title:"'com.example.App.java'"},"@EnableSimbot\n@SpringBootApplication\npublic class App {\n public static void main(String[] args) {\n SpringApplication.run(App.class, args);\n }\n}\n")))),(0,o.kt)("h2",{id:"\u76d1\u542c\u4e8b\u4ef6"},"\u76d1\u542c\u4e8b\u4ef6"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\u5c31\u662f\u903b\u8f91\u4ee3\u7801\u6240\u5728\u7684\u5730\u65b9\u4e86\uff0c\u7f16\u5199\u4e00\u4e2a\u76d1\u542c\u51fd\u6570\u5e76\u76d1\u542c\u4e00\u4e2a\u4e8b\u4ef6\u3002"),(0,o.kt)("p",null,"\u6b64\u5904\u6211\u4eec\u76d1\u542c ",(0,o.kt)("inlineCode",{parentName:"p"},"ChannelMessageEvent"),"\uff0c\u4e5f\u5c31\u662f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"\u5b50\u9891\u9053\u7684\u6d88\u606f\u4e8b\u4ef6")),"\u3002"),(0,o.kt)("p",null,"\u5047\u8bbe\uff1a\u8981\u6c42bot\u5fc5\u987b",(0,o.kt)("strong",{parentName:"p"},"\u88abAT"),"\uff0c\u5e76\u4e14\u8bf4\u4e00\u53e5 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u597d"),"\uff0c\u6b64\u65f6bot\u4f1a",(0,o.kt)("strong",{parentName:"p"},"\u5f15\u7528"),"\u7528\u6237\u53d1\u9001\u7684\u6d88\u606f\u5e76\u56de\u590d ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4f60\u4e5f\u597d!")," \uff0c\u7c7b\u4f3c\u4e8e\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"\u7528\u6237: \n@BOT \u4f60\u597d\n\nBOT:\n> \u7528\u6237: @BOT \u4f60\u597d\n\u4f60\u4e5f\u597d! \n")),(0,o.kt)(r.Z,{groupId:"code",mdxType:"Tabs"},(0,o.kt)(i.Z,{value:"Kotlin",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-kotlin",metastring:"title='com.example.listener.ExampleListener.kt'",title:"'com.example.listener.ExampleListener.kt'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n\n@Component\nclass ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n suspend fun onChannelMessage(event: ChannelMessageEvent) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n event.reply("\u4f60\u4e5f\u597d!")\n }\n}\n\n\n'))),(0,o.kt)(i.Z,{value:"Java",label:"Java Blocking",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public void onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n \n // Java\u4e2d\u7684\u963b\u585e\u5f0fAPI\n event.replyBlocking("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Async",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n \n // \u5c06 CompletableFuture \u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return event.replyAsync("\u4f60\u4e5f\u597d!");\n }\n \n}\n'))),(0,o.kt)(i.Z,{value:"Java Reactive",mdxType:"TabItem"},(0,o.kt)("admonition",{title:"\u6709\u8981\u6c42",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5982\u679c\u8fd4\u56de\u503c\u662f\u9700\u8981\u7b2c\u4e09\u65b9\u5e93\u7684\u54cd\u5e94\u5f0f\u7c7b\u578b\uff0c\u90a3\u4e48\u4f60\u7684\u9879\u76ee\u73af\u5883\u4f9d\u8d56\u4e2d\u5fc5\u987b\u5b58\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Kotlin courotines")," \u5bf9\u5176\u7684\u652f\u6301\u5e93\u624d\u53ef\u4f7f\u7528\u3002\n\u4f60\u53ef\u4ee5\u53c2\u8003\u6587\u6863\u4e2d ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/basic/event-listener#%E5%8F%AF%E5%93%8D%E5%BA%94%E5%BC%8F%E7%9A%84%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%9C"},(0,o.kt)("em",{parentName:"a"},"\u54cd\u5e94\u5f0f\u7684\u5904\u7406\u7ed3\u679c"))," \u7684\u5185\u5bb9\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-java",metastring:"title='com.example.listener.ExampleListener.java'",title:"'com.example.listener.ExampleListener.java'"},'import love.forte.simboot.annotation.ContentTrim\nimport love.forte.simboot.annotation.Filter\nimport love.forte.simboot.annotation.Listener\nimport love.forte.simbot.event.ChannelMessageEvent\n \n@Component\npublic class ExampleListener {\n \n @Listener\n @Filter(value = "\u4f60\u597d", targets = @Filter.Targets(atBot = true))\n @ContentTrim // \u5f53\u5339\u914d\u88abat\u65f6\uff0c\u5c06\'at\'\u8fd9\u4e2a\u7279\u6b8a\u6d88\u606f\u79fb\u9664\u540e\uff0c\u5269\u4f59\u7684\u6587\u672c\u6d88\u606f\u5927\u6982\u7387\u5b58\u5728\u524d\u540e\u7a7a\u683c\uff0c\u901a\u8fc7\u6b64\u6ce8\u89e3\u5728\u5339\u914d\u7684\u65f6\u5019\u5ffd\u7565\u524d\u540e\u7a7a\u683c\n public Mono onChannelMessage(ChannelMessageEvent event) { // \u5c06\u8981\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u653e\u5728\u53c2\u6570\u91cc\uff0c\u5373\u4ee3\u8868\u76d1\u542c\u6b64\u7c7b\u578b\u7684\u6d88\u606f\n \n // \u5c06 Mono \u7b49\u54cd\u5e94\u5f0f\u7c7b\u578b\u4f5c\u4e3a\u8fd4\u56de\u503c\uff0csimbot\u4f1a\u4ee5\u975e\u963b\u585e\u7684\u5f62\u5f0f\u5904\u7406\u5b83\n return Mono.fromCompletionStage(event.replyAsync("\u4f60\u4e5f\u597d!"));\n }\n \n}\n')))),(0,o.kt)("h2",{id:"\u542f\u52a8"},"\u542f\u52a8"),(0,o.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u542f\u52a8\u7a0b\u5e8f\u5e76\u5728\u4f60\u7684\u6c99\u7bb1\u9891\u9053\u4e2d@\u5b83\u8bd5\u8bd5\u770b\u5427\u3002"),(0,o.kt)("p",null,"\u5f53\u7136\uff0c\u5982\u679c\u9047\u5230\u4e86\u9884\u671f\u5916\u7684\u95ee\u9898\u4e5f\u4e0d\u8981\u614c\uff0c\u79ef\u6781\u53cd\u9988\u95ee\u9898\u624d\u80fd\u4f7f\u6211\u4eec\u53d8\u5f97\u66f4\u597d\uff0c\u53ef\u4ee5\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot/issues"},"Issues")," \u53cd\u9988\u95ee\u9898\u3001",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u95ee\u3002"),(0,o.kt)("h2",{id:"\u66f4\u591a"},"\u66f4\u591a"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love"},"simbot3\u5b98\u7f51")," \u6765\u4e86\u89e3simbot3\u7684\u5404",(0,o.kt)("strong",{parentName:"p"},"\u901a\u7528\u80fd\u529b"),"\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love"},"API\u6587\u6863")," \u6216\u901a\u8fc7\u6e90\u7801\u7ffb\u9605\u3001\u641c\u7d22\u5e76\u4e86\u89e3\u5177\u4f53\u7684\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u524d\u5f80 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},"\u793e\u533a")," \u63d0\u51fa\u7591\u60d1\u3002"),(0,o.kt)("p",null,"\u6700\u7ec8\uff0c\u672c\u624b\u518c\u7f51\u7ad9\u53ef\u80fd\u4f1a\u65f6\u4e0d\u65f6\u7684\u66f4\u65b0\u4e00\u4e9b\u5b9e\u7528\u6027\u7684\u5e94\u7528\u6587\u6863\u3002"),(0,o.kt)("admonition",{title:"\u7cbe\u529b\u6709\u9650 ",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u7f16\u5199\u4f7f\u7528\u624b\u518c\u662f\u6781\u5176\u6d88\u8017\u7cbe\u529b\u7684\u4e8b\u60c5\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6211\u4eec\u4f1a\u9996\u5148\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"\u6e90\u7801\u7684\u6587\u6863\u6ce8\u91ca"),"\u7684\u5168\u9762\u6027\uff0c\u540c\u65f6\u7531\u6b64\u4fdd\u8bc1",(0,o.kt)("strong",{parentName:"p"},"API\u6587\u6863"),"\u7684\u8bf4\u660e\u59cb\u7ec8\u662f\u7d27\u968f\u6e90\u7801\u751f\u6210\u800c\u5b8c\u6574\u7684\u3002\uff08API\u6587\u6863\u4f1a\u968f\u7740\u7248\u672c\u7684\u53d1\u5e03\u81ea\u52a8\u90e8\u7f72\uff09"),(0,o.kt)("p",{parentName:"admonition"},"\u5176\u6b21\uff0c\u6211\u4eec\u4f1a\u5c3d\u53ef\u80fd\u7684\u53ca\u65f6\u5e76\u5168\u9762\u7684\u56de\u590d",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/simple-robot/discussions"},(0,o.kt)("strong",{parentName:"a"},"\u793e\u533a")),"\u4e2d\u7684\u76f8\u5173\u7591\u60d1\u3002"),(0,o.kt)("p",{parentName:"admonition"},"\u6700\u7ec8\uff0c\u6211\u4eec\u624d\u4f1a\u8003\u8651\u5b8c\u5584\u672c\u624b\u518c\u7f51\u7ad9\u3002")))}v.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file diff --git a/assets/js/68a39df5.62f956e7.js b/assets/js/68a39df5.01a5d51e.js similarity index 99% rename from assets/js/68a39df5.62f956e7.js rename to assets/js/68a39df5.01a5d51e.js index 6808ffb5..62fd0e9e 100644 --- a/assets/js/68a39df5.62f956e7.js +++ b/assets/js/68a39df5.01a5d51e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[0],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>u});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},s=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},k=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=c(n),k=r,u=d["".concat(l,".").concat(k)]||d[k]||m[k]||i;return n?o.createElement(u,a(a({ref:t},s),{},{components:n})):o.createElement(u,a({ref:t},s))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=k;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:r,a[1]=p;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>c});var o=n(7462),r=(n(7294),n(3905));const i={title:"BOT\u914d\u7f6e\u6587\u4ef6"},a=void 0,p={unversionedId:"bot-config/index",id:"version-3.0.0.0-alpha.7/bot-config/index",title:"BOT\u914d\u7f6e\u6587\u4ef6",description:"\u5f85\u65bd\u5de5",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/bot-config/index.md",sourceDirName:"bot-config",slug:"/bot-config/",permalink:"/docs/3.0.0.0-alpha.7/bot-config/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/bot-config/index.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"BOT\u914d\u7f6e\u6587\u4ef6"},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/3.0.0.0-alpha.7/quick-start/spring-boot"}},l={},c=[{value:"component",id:"component",level:3},{value:"clientId",id:"clientid",level:3},{value:"token",id:"token",level:3},{value:"config",id:"config",level:3},{value:"config.isCompress",id:"configiscompress",level:4},{value:"config.syncPeriods",id:"configsyncperiods",level:4}],s={toc:c},d="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"\u5f85\u65bd\u5de5",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"\u5f85\u65bd\u5de5")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"title='xxx.bot.json'",title:"'xxx.bot.json'"},'{\n "component": "simbot.kook",\n "clientId": "Your client ID",\n "token": "Your ws token",\n "config": {\n "isCompress": true,\n "syncPeriods": {\n "guildSyncPeriod": 60000,\n "memberSyncPeriods": 60000\n }\n }\n}\n')),(0,r.kt)("h3",{id:"component"},(0,r.kt)("inlineCode",{parentName:"h3"},"component")),(0,r.kt)("p",null,"\u56fa\u5b9a\u503c ",(0,r.kt)("inlineCode",{parentName:"p"},"simbot.kook"),"\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5fc5\u586b"),"\uff0c\u4ee3\u8868\u6b64\u914d\u7f6e\u6587\u4ef6\u4e3aKOOK\u7ec4\u4ef6\u7684\u3002"),(0,r.kt)("h3",{id:"clientid"},(0,r.kt)("inlineCode",{parentName:"h3"},"clientId")),(0,r.kt)("p",null,"BOT\u7684 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Client ID")),"\u3002"),(0,r.kt)("h3",{id:"token"},(0,r.kt)("inlineCode",{parentName:"h3"},"token")),(0,r.kt)("p",null,"BOT\u4f7f\u7528 ",(0,r.kt)("strong",{parentName:"p"},"websocket")," \u6a21\u5f0f\u8fdb\u884c\u8fde\u63a5\u7684 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Token"))," ."),(0,r.kt)("admonition",{title:"\u5728\u54ea\u513f?",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"\u53ef\u4ee5\u5728 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u5f00\u53d1\u8005\u5e73\u53f0-\u5e94\u7528")," \u4e2d\u67e5\u770b\u3002")),(0,r.kt)("admonition",{title:"\u540e\u65e5\u8c08",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"\u65e5\u540e\u6b64\u7c7b",(0,r.kt)("strong",{parentName:"p"},"\u7968\u636e\u4fe1\u606f"),"\u4f1a\u6574\u5408\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"ticket")," \u5b57\u6bb5\u5185\u3002"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "component": "simbot.kook",\n "ticket": {\n "clientId": "Your client ID",\n "token": "Your ws token"\n }\n}\n'))),(0,r.kt)("h3",{id:"config"},(0,r.kt)("inlineCode",{parentName:"h3"},"config")),(0,r.kt)("p",null,"\u5176\u4ed6\u914d\u7f6e\uff0c\u53ef\u9009\u3002"),(0,r.kt)("h4",{id:"configiscompress"},(0,r.kt)("inlineCode",{parentName:"h4"},"config.isCompress")),(0,r.kt)("p",null,"\u662f\u5426\u538b\u7f29\u6570\u636e\u3002\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\u3002"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u53c2\u8003 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/gateway"},"Gateway API")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"compress")," \u53c2\u6570\u3002")),(0,r.kt)("h4",{id:"configsyncperiods"},(0,r.kt)("inlineCode",{parentName:"h4"},"config.syncPeriods")),(0,r.kt)("p",null,"\u7f13\u5b58\u5bf9\u8c61\u4fe1\u606f\u7684\u540c\u6b65\u5468\u671f\u914d\u7f6e\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "syncPeriods": {\n "guildSyncPeriod": 180000,\n "batchDelay": 0\n }\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"guildSyncPeriod"))),(0,r.kt)("p",null,"\u5bf9\u9891\u9053\u670d\u52a1\u5668\u8fdb\u884c\u540c\u6b65\u7684\u5468\u671f\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5927\u4e8e",(0,r.kt)("inlineCode",{parentName:"strong"},"0"),"\u65f6\u751f\u6548"),"\u3002\u670d\u52a1\u5668\u540c\u6b65\u7684\u540c\u65f6\u4f1a\u53bb\u540c\u6b65\u6b64\u670d\u52a1\u5668\u4e0b\u7684\u6240\u6709\u9891\u9053\u5217\u8868\u4e0e\u6210\u5458\u5217\u8868\u3002"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"180000"),"\uff0c\u5373 ",(0,r.kt)("inlineCode",{parentName:"p"},"180000\u6beb\u79d2 -> 180\u79d2 -> 3\u5206\u949f"),"\u3002"),(0,r.kt)("p",null,"\u8fdb\u884c\u914d\u7f6e\u7684\u65f6\u5019\u9700\u8981\u6ce8\u610f\u8c03\u7528\u9891\u7387\u4e0a\u9650\u7b49\u76f8\u5173\u95ee\u9898\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"batchDelay"))),(0,r.kt)("p",null,"\u5f53 ",(0,r.kt)("inlineCode",{parentName:"p"},"guildSyncPeriod")," \u751f\u6548\u65f6\uff0c\u5728\u6570\u636e\u540c\u6b65\u7684\u8fc7\u7a0b\u4e2d\u6bcf\u4e00\u6b21\u67e5\u8be2\uff08\u5373\u6279\u6b21\uff09\u540e\u6302\u8d77\u7b49\u5f85\u7684\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\u3002"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"0"),"\uff0c\u5373\u4e0d\u7b49\u5f85\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u914d\u7f6e\u6b64\u5c5e\u6027\u53ef\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u964d\u4f4e\u89e6\u53d1\u8c03\u7528\u9891\u7387\u9650\u5236\u7684\u98ce\u9669\u3002"),(0,r.kt)("br",null),(0,r.kt)("details",null,(0,r.kt)("summary",null,"\u9ed8\u8ba4\u503c\u7684\u7531\u6765?"),(0,r.kt)("p",null,"\u4e00\u62cd\u8111\u74dc\u513f\u968f\u4fbf\u5199\u7684\u3002")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[0],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>u});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=o.createContext({}),c=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},s=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},k=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),d=c(n),k=r,u=d["".concat(l,".").concat(k)]||d[k]||m[k]||i;return n?o.createElement(u,a(a({ref:t},s),{},{components:n})):o.createElement(u,a({ref:t},s))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=k;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[d]="string"==typeof e?e:r,a[1]=p;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>c});var o=n(7462),r=(n(7294),n(3905));const i={title:"BOT\u914d\u7f6e\u6587\u4ef6"},a=void 0,p={unversionedId:"bot-config/index",id:"version-3.0.0.0-alpha.7/bot-config/index",title:"BOT\u914d\u7f6e\u6587\u4ef6",description:"\u5f85\u65bd\u5de5",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/bot-config/index.md",sourceDirName:"bot-config",slug:"/bot-config/",permalink:"/docs/3.0.0.0-alpha.7/bot-config/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/bot-config/index.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"BOT\u914d\u7f6e\u6587\u4ef6"},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/3.0.0.0-alpha.7/quick-start/spring-boot"}},l={},c=[{value:"component",id:"component",level:3},{value:"clientId",id:"clientid",level:3},{value:"token",id:"token",level:3},{value:"config",id:"config",level:3},{value:"config.isCompress",id:"configiscompress",level:4},{value:"config.syncPeriods",id:"configsyncperiods",level:4}],s={toc:c},d="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"\u5f85\u65bd\u5de5",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"\u5f85\u65bd\u5de5")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"title='xxx.bot.json'",title:"'xxx.bot.json'"},'{\n "component": "simbot.kook",\n "clientId": "Your client ID",\n "token": "Your ws token",\n "config": {\n "isCompress": true,\n "syncPeriods": {\n "guildSyncPeriod": 60000,\n "memberSyncPeriods": 60000\n }\n }\n}\n')),(0,r.kt)("h3",{id:"component"},(0,r.kt)("inlineCode",{parentName:"h3"},"component")),(0,r.kt)("p",null,"\u56fa\u5b9a\u503c ",(0,r.kt)("inlineCode",{parentName:"p"},"simbot.kook"),"\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5fc5\u586b"),"\uff0c\u4ee3\u8868\u6b64\u914d\u7f6e\u6587\u4ef6\u4e3aKOOK\u7ec4\u4ef6\u7684\u3002"),(0,r.kt)("h3",{id:"clientid"},(0,r.kt)("inlineCode",{parentName:"h3"},"clientId")),(0,r.kt)("p",null,"BOT\u7684 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Client ID")),"\u3002"),(0,r.kt)("h3",{id:"token"},(0,r.kt)("inlineCode",{parentName:"h3"},"token")),(0,r.kt)("p",null,"BOT\u4f7f\u7528 ",(0,r.kt)("strong",{parentName:"p"},"websocket")," \u6a21\u5f0f\u8fdb\u884c\u8fde\u63a5\u7684 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Token"))," ."),(0,r.kt)("admonition",{title:"\u5728\u54ea\u513f?",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"\u53ef\u4ee5\u5728 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/app/index"},"KOOK\u5f00\u53d1\u8005\u5e73\u53f0-\u5e94\u7528")," \u4e2d\u67e5\u770b\u3002")),(0,r.kt)("admonition",{title:"\u540e\u65e5\u8c08",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"\u65e5\u540e\u6b64\u7c7b",(0,r.kt)("strong",{parentName:"p"},"\u7968\u636e\u4fe1\u606f"),"\u4f1a\u6574\u5408\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"ticket")," \u5b57\u6bb5\u5185\u3002"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "component": "simbot.kook",\n "ticket": {\n "clientId": "Your client ID",\n "token": "Your ws token"\n }\n}\n'))),(0,r.kt)("h3",{id:"config"},(0,r.kt)("inlineCode",{parentName:"h3"},"config")),(0,r.kt)("p",null,"\u5176\u4ed6\u914d\u7f6e\uff0c\u53ef\u9009\u3002"),(0,r.kt)("h4",{id:"configiscompress"},(0,r.kt)("inlineCode",{parentName:"h4"},"config.isCompress")),(0,r.kt)("p",null,"\u662f\u5426\u538b\u7f29\u6570\u636e\u3002\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\u3002"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u53c2\u8003 ",(0,r.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/http/gateway"},"Gateway API")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"compress")," \u53c2\u6570\u3002")),(0,r.kt)("h4",{id:"configsyncperiods"},(0,r.kt)("inlineCode",{parentName:"h4"},"config.syncPeriods")),(0,r.kt)("p",null,"\u7f13\u5b58\u5bf9\u8c61\u4fe1\u606f\u7684\u540c\u6b65\u5468\u671f\u914d\u7f6e\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "config": {\n "syncPeriods": {\n "guildSyncPeriod": 180000,\n "batchDelay": 0\n }\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"guildSyncPeriod"))),(0,r.kt)("p",null,"\u5bf9\u9891\u9053\u670d\u52a1\u5668\u8fdb\u884c\u540c\u6b65\u7684\u5468\u671f\uff0c\u5355\u4f4d\u6beb\u79d2\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5927\u4e8e",(0,r.kt)("inlineCode",{parentName:"strong"},"0"),"\u65f6\u751f\u6548"),"\u3002\u670d\u52a1\u5668\u540c\u6b65\u7684\u540c\u65f6\u4f1a\u53bb\u540c\u6b65\u6b64\u670d\u52a1\u5668\u4e0b\u7684\u6240\u6709\u9891\u9053\u5217\u8868\u4e0e\u6210\u5458\u5217\u8868\u3002"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"180000"),"\uff0c\u5373 ",(0,r.kt)("inlineCode",{parentName:"p"},"180000\u6beb\u79d2 -> 180\u79d2 -> 3\u5206\u949f"),"\u3002"),(0,r.kt)("p",null,"\u8fdb\u884c\u914d\u7f6e\u7684\u65f6\u5019\u9700\u8981\u6ce8\u610f\u8c03\u7528\u9891\u7387\u4e0a\u9650\u7b49\u76f8\u5173\u95ee\u9898\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"batchDelay"))),(0,r.kt)("p",null,"\u5f53 ",(0,r.kt)("inlineCode",{parentName:"p"},"guildSyncPeriod")," \u751f\u6548\u65f6\uff0c\u5728\u6570\u636e\u540c\u6b65\u7684\u8fc7\u7a0b\u4e2d\u6bcf\u4e00\u6b21\u67e5\u8be2\uff08\u5373\u6279\u6b21\uff09\u540e\u6302\u8d77\u7b49\u5f85\u7684\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\u3002"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"0"),"\uff0c\u5373\u4e0d\u7b49\u5f85\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u914d\u7f6e\u6b64\u5c5e\u6027\u53ef\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u964d\u4f4e\u89e6\u53d1\u8c03\u7528\u9891\u7387\u9650\u5236\u7684\u98ce\u9669\u3002"),(0,r.kt)("br",null),(0,r.kt)("details",null,(0,r.kt)("summary",null,"\u9ed8\u8ba4\u503c\u7684\u7531\u6765?"),(0,r.kt)("p",null,"\u4e00\u62cd\u8111\u74dc\u513f\u968f\u4fbf\u5199\u7684\u3002")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/888645c5.3162246e.js b/assets/js/888645c5.791b9bda.js similarity index 98% rename from assets/js/888645c5.3162246e.js rename to assets/js/888645c5.791b9bda.js index 2f20804b..636e5b1a 100644 --- a/assets/js/888645c5.3162246e.js +++ b/assets/js/888645c5.791b9bda.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[479],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=s(r),m=i,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(f,c(c({ref:t},p),{},{components:r})):n.createElement(f,c({ref:t},p))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,c=new Array(a);c[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:i,c[1]=o;for(var s=2;s{r.d(t,{Z:()=>h});var n=r(7294),i=r(6010),a=r(3438),c=r(9960),o=r(3919),l=r(5999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function p(e){let{href:t,children:r}=e;return n.createElement(c.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function u(e){let{href:t,icon:r,title:a,description:c}=e;return n.createElement(p,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:a},r," ",a),c&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:c},c))}function d(e){let{item:t}=e;const r=(0,a.Wl)(t);return r?n.createElement(u,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const r=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",i=(0,a.xz)(t.docId??void 0);return n.createElement(u,{href:t.href,icon:r,title:t.label,description:t.description??i?.description})}function f(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(d,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,a.jA)();return n.createElement(h,{items:r.items,className:t})}function h(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const c=(0,a.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},c.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e})))))}},3561:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var n=r(7462),i=(r(7294),r(3905)),a=r(2991),c=r(3438);const o={title:"\u5feb\u901f\u5f00\u59cb"},l=void 0,s={unversionedId:"quick-start/index",id:"version-3.0.0.0-alpha.7/quick-start/index",title:"\u5feb\u901f\u5f00\u59cb",description:"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528KOOK\u7ec4\u4ef6\u7684\u7b80\u5355\u793a\u4f8b\u3002",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/index.md",sourceDirName:"quick-start",slug:"/quick-start/",permalink:"/docs/3.0.0.0-alpha.7/quick-start/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/index.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"\u5feb\u901f\u5f00\u59cb"},sidebar:"tutorialSidebar",previous:{title:"\u9996\u9875",permalink:"/docs/3.0.0.0-alpha.7/"},next:{title:"\u4f7f\u7528API",permalink:"/docs/3.0.0.0-alpha.7/quick-start/api"}},p={},u=[{value:"\u6587\u6863\u5217\u8868",id:"\u6587\u6863\u5217\u8868",level:2}],d={toc:u},m="wrapper";function f(e){let{components:t,...r}=e;return(0,i.kt)(m,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528",(0,i.kt)("strong",{parentName:"p"},"KOOK\u7ec4\u4ef6"),"\u7684\u7b80\u5355\u793a\u4f8b\u3002"),(0,i.kt)("h2",{id:"\u6587\u6863\u5217\u8868"},"\u6587\u6863\u5217\u8868"),(0,i.kt)(a.Z,{items:(0,c.jA)().items,mdxType:"DocCardList"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[479],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=s(r),m=i,f=u["".concat(l,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(f,c(c({ref:t},p),{},{components:r})):n.createElement(f,c({ref:t},p))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,c=new Array(a);c[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[u]="string"==typeof e?e:i,c[1]=o;for(var s=2;s{r.d(t,{Z:()=>h});var n=r(7294),i=r(6010),a=r(3438),c=r(9960),o=r(3919),l=r(5999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function p(e){let{href:t,children:r}=e;return n.createElement(c.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function u(e){let{href:t,icon:r,title:a,description:c}=e;return n.createElement(p,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:a},r," ",a),c&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:c},c))}function d(e){let{item:t}=e;const r=(0,a.Wl)(t);return r?n.createElement(u,{href:r,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){let{item:t}=e;const r=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",i=(0,a.xz)(t.docId??void 0);return n.createElement(u,{href:t.href,icon:r,title:t.label,description:t.description??i?.description})}function f(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(d,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function y(e){let{className:t}=e;const r=(0,a.jA)();return n.createElement(h,{items:r.items,className:t})}function h(e){const{items:t,className:r}=e;if(!t)return n.createElement(y,e);const c=(0,a.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},c.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e})))))}},3561:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var n=r(7462),i=(r(7294),r(3905)),a=r(2991),c=r(3438);const o={title:"\u5feb\u901f\u5f00\u59cb"},l=void 0,s={unversionedId:"quick-start/index",id:"version-3.0.0.0-alpha.7/quick-start/index",title:"\u5feb\u901f\u5f00\u59cb",description:"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528KOOK\u7ec4\u4ef6\u7684\u7b80\u5355\u793a\u4f8b\u3002",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/quick-start/index.md",sourceDirName:"quick-start",slug:"/quick-start/",permalink:"/docs/3.0.0.0-alpha.7/quick-start/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/quick-start/index.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",frontMatter:{title:"\u5feb\u901f\u5f00\u59cb"},sidebar:"tutorialSidebar",previous:{title:"\u9996\u9875",permalink:"/docs/3.0.0.0-alpha.7/"},next:{title:"\u4f7f\u7528API",permalink:"/docs/3.0.0.0-alpha.7/quick-start/api"}},p={},u=[{value:"\u6587\u6863\u5217\u8868",id:"\u6587\u6863\u5217\u8868",level:2}],d={toc:u},m="wrapper";function f(e){let{components:t,...r}=e;return(0,i.kt)(m,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"\u6b64\u76ee\u5f55\u4e2d\u63d0\u4f9b\u4e00\u4e9b\u4f7f\u7528",(0,i.kt)("strong",{parentName:"p"},"KOOK\u7ec4\u4ef6"),"\u7684\u7b80\u5355\u793a\u4f8b\u3002"),(0,i.kt)("h2",{id:"\u6587\u6863\u5217\u8868"},"\u6587\u6863\u5217\u8868"),(0,i.kt)(a.Z,{items:(0,c.jA)().items,mdxType:"DocCardList"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ad14e531.0c6e039d.js b/assets/js/ad14e531.68823102.js similarity index 99% rename from assets/js/ad14e531.0c6e039d.js rename to assets/js/ad14e531.68823102.js index e3d42989..f0bd44c9 100644 --- a/assets/js/ad14e531.0c6e039d.js +++ b/assets/js/ad14e531.68823102.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[709],{5162:(e,a,t)=>{t.d(a,{Z:()=>r});var n=t(7294),l=t(6010);const s={tabItem:"tabItem_Ymn6"};function r(e){let{children:a,hidden:t,className:r}=e;return n.createElement("div",{role:"tabpanel",className:(0,l.Z)(s.tabItem,r),hidden:t},a)}},4866:(e,a,t)=>{t.d(a,{Z:()=>N});var n=t(7462),l=t(7294),s=t(6010),r=t(2466),o=t(6550),i=t(1980),c=t(7392),u=t(12);function d(e){return function(e){return l.Children.map(e,(e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:a}=e;return!!a&&"object"==typeof a&&"value"in a}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:a,label:t,attributes:n,default:l}}=e;return{value:a,label:t,attributes:n,default:l}}))}function p(e){const{values:a,children:t}=e;return(0,l.useMemo)((()=>{const e=a??d(t);return function(e){const a=(0,c.l)(e,((e,a)=>e.value===a.value));if(a.length>0)throw new Error(`Docusaurus error: Duplicate values "${a.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[a,t])}function m(e){let{value:a,tabValues:t}=e;return t.some((e=>e.value===a))}function k(e){let{queryString:a=!1,groupId:t}=e;const n=(0,o.k6)(),s=function(e){let{queryString:a=!1,groupId:t}=e;if("string"==typeof a)return a;if(!1===a)return null;if(!0===a&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:a,groupId:t});return[(0,i._X)(s),(0,l.useCallback)((e=>{if(!s)return;const a=new URLSearchParams(n.location.search);a.set(s,e),n.replace({...n.location,search:a.toString()})}),[s,n])]}function v(e){const{defaultValue:a,queryString:t=!1,groupId:n}=e,s=p(e),[r,o]=(0,l.useState)((()=>function(e){let{defaultValue:a,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(a){if(!m({value:a,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${a}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return a}const n=t.find((e=>e.default))??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:a,tabValues:s}))),[i,c]=k({queryString:t,groupId:n}),[d,v]=function(e){let{groupId:a}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(a),[n,s]=(0,u.Nk)(t);return[n,(0,l.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:n}),g=(()=>{const e=i??d;return m({value:e,tabValues:s})?e:null})();(0,l.useLayoutEffect)((()=>{g&&o(g)}),[g]);return{selectedValue:r,selectValue:(0,l.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);o(e),c(e),v(e)}),[c,v,s]),tabValues:s}}var g=t(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:a,block:t,selectedValue:o,selectValue:i,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.o5)(),p=e=>{const a=e.currentTarget,t=u.indexOf(a),n=c[t].value;n!==o&&(d(a),i(n))},m=e=>{let a=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const t=u.indexOf(e.currentTarget)+1;a=u[t]??u[0];break}case"ArrowLeft":{const t=u.indexOf(e.currentTarget)-1;a=u[t]??u[u.length-1];break}}a?.focus()};return l.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":t},a)},c.map((e=>{let{value:a,label:t,attributes:r}=e;return l.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===a?0:-1,"aria-selected":o===a,key:a,ref:e=>u.push(e),onKeyDown:m,onClick:p},r,{className:(0,s.Z)("tabs__item",h.tabItem,r?.className,{"tabs__item--active":o===a})}),t??a)})))}function T(e){let{lazy:a,children:t,selectedValue:n}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(a){const e=s.find((e=>e.props.value===n));return e?(0,l.cloneElement)(e,{className:"margin-top--md"}):null}return l.createElement("div",{className:"margin-top--md"},s.map(((e,a)=>(0,l.cloneElement)(e,{key:a,hidden:e.props.value!==n}))))}function I(e){const a=v(e);return l.createElement("div",{className:(0,s.Z)("tabs-container",h.tabList)},l.createElement(b,(0,n.Z)({},e,a)),l.createElement(T,(0,n.Z)({},e,a)))}function N(e){const a=(0,g.Z)();return l.createElement(I,(0,n.Z)({key:String(a)},e))}},7102:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>u,contentTitle:()=>i,default:()=>k,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var n=t(7462),l=(t(7294),t(3905)),s=t(4866),r=t(5162);t(614),t(2965);const o={title:"\u6d88\u606f",sidebar_position:10,toc_max_heading_level:4},i=void 0,c={unversionedId:"basic/message",id:"basic/message",title:"\u6d88\u606f",description:"\u4f5c\u4e3a\u4e00\u4e2a\u804a\u5929\u8f6f\u4ef6\u7684bot\uff0c\u6d88\u606f\u7684\u63a5\u6536\u3001\u5904\u7406\u4e0e\u53d1\u9001\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u3002\u5728 KOOK \u7ec4\u4ef6\u4e2d\uff0c\u6211\u4eec\u7406\u6240\u5e94\u5f53\u7684\u63d0\u4f9b\u4e86\u8fd9\u65b9\u9762\u7684\u80fd\u529b\u3002",source:"@site/docs/basic/message.md",sourceDirName:"basic",slug:"/basic/message",permalink:"/docs/basic/message",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/basic/message.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:10,frontMatter:{title:"\u6d88\u606f",sidebar_position:10,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"BOT\u914d\u7f6e\u6587\u4ef6",permalink:"/docs/bot-config/"},next:{title:"\u89d2\u8272\u64cd\u4f5c",permalink:"/docs/basic/role"}},u={},d=[{value:"API\u3001\u6807\u51c6\u5e93",id:"api\u6807\u51c6\u5e93",level:2},{value:"\u53d1\u9001\u6d88\u606f",id:"\u53d1\u9001\u6d88\u606f",level:3},{value:"\u63a5\u6536\u6d88\u606f",id:"\u63a5\u6536\u6d88\u606f",level:3},{value:"\u6838\u5fc3\u5e93",id:"\u6838\u5fc3\u5e93",level:2},{value:"\u6d88\u606f\u5143\u7d20",id:"\u6d88\u606f\u5143\u7d20",level:3},{value:"PlainText",id:"plaintext",level:4},{value:"ResourceImage & Image",id:"resourceimage--image",level:4},{value:"At",id:"at",level:4},{value:"AtAll",id:"atall",level:4},{value:"Emoji",id:"emoji",level:4},{value:"KookAssetMessage",id:"kookassetmessage",level:4},{value:"KookKMarkdownMessage",id:"kookkmarkdownmessage",level:4},{value:"KookCardMessage",id:"kookcardmessage",level:4},{value:"KookAtAllHere",id:"kookatallhere",level:4},{value:"KookAttachmentMessage",id:"kookattachmentmessage",level:4},{value:"\u53d1\u9001\u6d88\u606f",id:"\u53d1\u9001\u6d88\u606f-1",level:3},{value:"\u63a5\u6536\u6d88\u606f",id:"\u63a5\u6536\u6d88\u606f-1",level:3}],p={toc:d},m="wrapper";function k(e){let{components:a,...t}=e;return(0,l.kt)(m,(0,n.Z)({},p,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"\u4f5c\u4e3a\u4e00\u4e2a\u804a\u5929\u8f6f\u4ef6\u7684bot\uff0c\u6d88\u606f\u7684\u63a5\u6536\u3001\u5904\u7406\u4e0e\u53d1\u9001\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u3002\u5728 KOOK \u7ec4\u4ef6\u4e2d\uff0c\u6211\u4eec\u7406\u6240\u5e94\u5f53\u7684\u63d0\u4f9b\u4e86\u8fd9\u65b9\u9762\u7684\u80fd\u529b\u3002"),(0,l.kt)("h2",{id:"api\u6807\u51c6\u5e93"},"API\u3001\u6807\u51c6\u5e93"),(0,l.kt)("p",null,"\u5728 API \u6a21\u5757\u548c\u6807\u51c6\u5e93\u4e2d\uff0c\u6211\u4eec\u63d0\u4f9b\u4e86\u9488\u5bf9\u5b98\u65b9API\u7684\u5bf9\u5e94\u5b9e\u73b0\uff0c\u56e0\u6b64\u5b98\u65b9\u7684API\u4e2d\u5bf9\u6d88\u606f\u7684\u5904\u7406\u662f\u5982\u4f55\u7684\uff0c\u5728\u8fd9\u4e24\u4e2a\u6a21\u5757\u4e2d\u5c31\u662f\u5982\u4f55\u3002"),(0,l.kt)("h3",{id:"\u53d1\u9001\u6d88\u606f"},"\u53d1\u9001\u6d88\u606f"),(0,l.kt)("admonition",{title:"\u6d88\u606fAPI",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u4e0e\u6d88\u606f\u76f8\u5173\u7684API\u90fd\u5728\u5305\u8def\u5f84 ",(0,l.kt)("inlineCode",{parentName:"p"},"love.forte.simbot.kook.api.message")," \u4e2d\u3002")),(0,l.kt)("p",null,"\u4f60\u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u8fd9\u51e0\u4e2a API \u6765\u53d1\u9001\u6d88\u606f\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"SendChannelMessageApi"),": \u53d1\u9001\u9891\u9053\u804a\u5929\u6d88\u606f"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"SendDirectMessageApi"),": \u53d1\u9001\u79c1\u4fe1\u804a\u5929\u6d88\u606f")),(0,l.kt)("p",null,"\u5b83\u4eec\u7684\u5404\u4e2a\u53c2\u6570\u7b49\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\u4f60\u53ef\u4ee5\u5728 ",(0,l.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love/components/kook/"},"API\u6587\u6863")," \u4e2d\u627e\u5230\uff0c\u8fd9\u91cc\u5c31\u4e0d\u518d\u8d58\u8ff0\u4e86\u3002\n\u4ee5 ",(0,l.kt)("inlineCode",{parentName:"p"},"SendChannelMessageApi")," \u4e3a\u4f8b\uff0c\u63d0\u4f9b\u7b80\u5355\u7684\u793a\u4f8b\uff1a"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(CIO) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = SendChannelMessageApi.create(targetId = "\u76ee\u6807ID", content = "\u6d88\u606f\u5185\u5bb9")\n\n// \u6216\u5176\u4ed6\u6784\u5efa\u65b9\u5f0f\nSendChannelMessageApi.create {\n content = ""\n type = 9\n type(SendMessageType.KMARKDOWN)\n nonce = "nonce"\n quote = "quote"\n tempTargetId = "tempTargetId"\n}\n\n// \u5f97\u5230\u7ed3\u679c\nval result = api.requestData(client, authorization)\nprintln("result = $result")\nprintln("result.nonce = ${result.nonce}")\nprintln("result.msgId = ${result.msgId}")\nprintln("result.msgTimestamp = ${result.msgTimestamp}")\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = "Bot xxxxxxxxxx";\n\n// \u6784\u5efaapi\nvar api = SendChannelMessageApi.create("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\n// \u6216\u5176\u4ed6\u91cd\u8f7d\uff1a\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9", "Quote\u5f15\u7528ID", "nonce", "tempTargetId");\n// \u6216\u4f7f\u7528builder\uff1a\nSendChannelMessageApi.builder("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9")\n .type(SendMessageType.KMARKDOWN)\n .content("content")\n .quote("quote")\n .nonce("nonce")\n .tempTargetId("tempTargetId").build();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\nvar result = api.requestDataBlocking(client, authorization);\nSystem.out.println("result.getMsgId() = " + result.getMsgId());\nSystem.out.println("result.getNonce() = " + result.getNonce());\nSystem.out.println("result.getMsgTimestamp() = " + result.getMsgTimestamp());\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = "Bot xxxxxxxxxx";\n\n// \u6784\u5efaapi\nvar api = SendChannelMessageApi.create("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\n// \u6216\u5176\u4ed6\u91cd\u8f7d\uff1a\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9", "Quote\u5f15\u7528ID", "nonce", "tempTargetId");\n// \u6216\u4f7f\u7528builder\uff1a\nSendChannelMessageApi.builder("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9")\n .type(SendMessageType.KMARKDOWN)\n .content("content")\n .quote("quote")\n .nonce("nonce")\n .tempTargetId("tempTargetId").build();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\napi.requestDataAsync(client, authorization).thenAccept(result -> {\n // \u53d1\u9001\u540e\u7684\u7ed3\u679c\n System.out.println("result = " + result);\n System.out.println("result.getMsgId() = " + result.getMsgId());\n System.out.println("result.getNonce() = " + result.getNonce());\n System.out.println("result.getMsgTimestamp() = " + result.getMsgTimestamp());\n});\n')))),(0,l.kt)("admonition",{title:"USE BOT",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u5728\u6807\u51c6\u5e93\u4e2d\uff0c\u4f60\u4e5f\u53ef\u4ee5\u6784\u5efa\u4e00\u4e2a ",(0,l.kt)("inlineCode",{parentName:"p"},"Bot")," \u540e\u76f4\u63a5\u901a\u8fc7 Bot \u4f5c\u4e3a\u8bf7\u6c42\u7684\u51ed\u8bc1\u6765\u6e90\uff0c\u800c\u4e0d\u518d\u9700\u8981\u624b\u52a8\u51c6\u5907 ",(0,l.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u548c ",(0,l.kt)("inlineCode",{parentName:"p"},"authorization")," \u4e86\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {\n // \u914d\u7f6e...\n}\n\n// \u6784\u5efaapi...\nval api = ...\n\n// \u5f97\u5230\u7ed3\u679c\nval result = api.requestBy(bot)\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi...\nvar api = ...\n \n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\nvar result = api.requestByBlocking(bot);\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi...\nvar api = ...\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\napi.requestByAsync(bot).thenAccept(result -> {\n // ...\n});\n'))))),(0,l.kt)("h3",{id:"\u63a5\u6536\u6d88\u606f"},"\u63a5\u6536\u6d88\u606f"),(0,l.kt)("p",null,"\u60f3\u8981\u63a5\u6536\u6d88\u606f\uff0c\u9996\u5148\u9700\u8981\u4f7f\u7528\u6838\u5fc3\u5e93\u6ce8\u518c\u5e76\u542f\u52a8\u4e00\u4e2abot\u6765\u8ba2\u9605\u4e8b\u4ef6\u3002\u901a\u8fc7\u8ba2\u9605\u6d88\u606f\u4e8b\u4ef6\uff0c\u6211\u4eec\u4fbf\u53ef\u4ee5\u63a5\u6536\u5230\u6d88\u606f\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {\n // \u914d\u7f6e...\n}\n\nbot.processor { raw -> // this: Event, raw: String\n println("\u539f\u59cbJSON: $raw")\n println("event: $this")\n println("event.extra: ${this.extra}")\n println("content: ${this.content}")\n}\n\nbot.startAndJoin()\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\nbot.blockingProcessor(TextEventExtra.class, (event, raw) -> {\n System.out.println("raw = " + raw);\n System.out.println("event = " + event);\n System.out.println("event.extra = " + event.getExtra());\n System.out.println("content = " + event.getContent());\n});\n\nbot.startBlocking();\nbot.joinBlocking();\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\nbot.asyncProcessor(TextEventExtra.class, (event, raw) -> {\n System.out.println("raw = " + raw);\n System.out.println("event = " + event);\n System.out.println("event.extra = " + event.getExtra());\n System.out.println("content = " + event.getContent());\n return CompletableFuture.completedFuture(null);\n});\n\nbot.startAsync().join();\n')))),(0,l.kt)("p",null,"\u5176\u4e2d\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"content")," \u4fbf\u662f\u6d88\u606f\u5185\u5bb9\u4e86\u3002\u914d\u5408\u4e8b\u4ef6\u4e2d\u5176\u4ed6\u5c5e\u6027\u4fbf\u53ef\u4ee5\u89e3\u6790\u3001\u5904\u7406\u6d88\u606f\u5185\u5bb9\u4e86\u3002"),(0,l.kt)("h2",{id:"\u6838\u5fc3\u5e93"},"\u6838\u5fc3\u5e93"),(0,l.kt)("p",null,"\u5728\u6838\u5fc3\u5e93\u4e2d\uff0c\u5bf9\u6d88\u606f\u7684\u53d1\u9001\u548c\u63a5\u6536\u90fd\u6709\u7740 simbot API \u7684\u98ce\u683c\u3002"),(0,l.kt)("h3",{id:"\u6d88\u606f\u5143\u7d20"},"\u6d88\u606f\u5143\u7d20"),(0,l.kt)("p",null,"KOOK\u7ec4\u4ef6\u6838\u5fc3\u5e93\u4f5c\u4e3a simbot \u7684\u7ec4\u4ef6\u5e93\u4e4b\u4e00\uff0c\u81ea\u7136\u4f1a\u5bf9\u6807\u51c6\u6d88\u606f\u5143\u7d20\u8fdb\u884c\u90e8\u5206\u652f\u6301\u5e76\u63d0\u4f9b\u4e00\u4e9b\u5176\u4e13\u5c5e\u7684\u6d88\u606f\u5143\u7d20\u7c7b\u578b\u3002\u9996\u5148\u6765\u770b\u770b\u517c\u5bb9\u7684\u6807\u51c6\u6d88\u606f\u5143\u7d20\uff1a"),(0,l.kt)("h4",{id:"plaintext"},"PlainText"),(0,l.kt)("p",null,"\u6587\u672c\u6d88\u606f\u3002\u8fd9\u65e0\u9700\u591a\u8a00\uff0c\u6587\u672c\u6d88\u606f\u81ea\u7136\u80fd\u591f\u88ab\u652f\u6301\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n \nchannel.send("\u6587\u672c\u6d88\u606f")\nchannel.send("\u6587\u672c\u6d88\u606f".toText())\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n \nchannel.sendBlocking("\u6587\u672c\u6d88\u606f");\nchannel.sendBlocking(Text.of("\u6587\u672c\u6d88\u606f"));\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n \nchannel.sendAsync("\u6587\u672c\u6d88\u606f");\nchannel.sendAsync(Text.of("\u6587\u672c\u6d88\u606f"));\n')))),(0,l.kt)("h4",{id:"resourceimage--image"},"ResourceImage & Image"),(0,l.kt)("p",null,"\u56fe\u7247\u6d88\u606f\u3002\u53ef\u4ee5\u7528\u6765\u53d1\u9001\u56fe\u7247\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n\nchannel.send(Path("/xx/img.jpg").toResource().toImage())\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\nvar path = Paths.get("/xx/img.jpg");\nvar resource = Resource.of(path);\nvar resourceImage = Image.of(resource);\n\nchannel.sendAsync(resourceImage);\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\nvar path = Paths.get("/xx/img.jpg");\nvar resource = Resource.of(path);\nvar resourceImage = Image.of(resource);\n\nchannel.sendAsync(resourceImage);\n')))),(0,l.kt)("h4",{id:"at"},"At"),(0,l.kt)("p",null,"\u63d0\u53ca\u3002\u53ef\u4ee5\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"At")," \u63d0\u53ca\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"\u7528\u6237"),"(\u9ed8\u8ba4)\u3001\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"\u9891\u9053"),"\u6216\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"\u89d2\u8272"),"\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nval atUser = At(123.ID)\nval atChannel = At(123.ID, KookMessages.AT_TYPE_CHANNEL)\n// \u6216\uff1aKookMessages.atChannel(123.ID)\nval atRole = At(123.ID, KookMessages.AT_TYPE_ROLE)\n// \u6216\uff1aKookMessages.atRole(123.ID)\n\nchannel.send(atUser)\nchannel.send(atUser + atChannel + atRole)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar atUser = new At(Identifies.ID(123));\nvar atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL);\n// \u6216\uff1aKookMessages.atChannel(Identifies.ID(123));\nvar atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE);\n// \u6216\uff1aKookMessages.atRole(Identifies.ID(123));\n\nchannel.sendBlocking(atUser);\nchannel.sendBlocking(Messages.toMessages(atUser, atChannel, atRole));\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar atUser = new At(Identifies.ID(123));\nvar atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL);\n// \u6216\uff1aKookMessages.atChannel(Identifies.ID(123));\nvar atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE);\n// \u6216\uff1aKookMessages.atRole(Identifies.ID(123));\n\nchannel.sendAsync(atUser);\nchannel.sendAsync(Messages.toMessages(atUser, atChannel, atRole));\n")))),(0,l.kt)("h4",{id:"atall"},"AtAll"),(0,l.kt)("p",null,"\u63d0\u53ca\u3002\u53ef\u4ee5\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"AtAll")," \u63d0\u53ca\u6240\u6709\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nchannel.send(AtAll)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendBlocking(AtAll.INSTANCE);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendAsync(AtAll.INSTANCE);\n")))),(0,l.kt)("h4",{id:"emoji"},"Emoji"),(0,l.kt)("p",null,"emoji\u3002\u662f\u6307 ",(0,l.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/kmarkdown"},"KMarkdown")," \u4e2d\u6240\u8ff0\u7684 ",(0,l.kt)("strong",{parentName:"p"},'"emoji"')," \uff08",(0,l.kt)("inlineCode",{parentName:"p"},":emoji:"),"\uff09\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nchannel.send(Emoji(123.ID))\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendBlocking(new Emoji(Identifies.ID(123)));\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendAsync(new Emoji(Identifies.ID(123)));\n")))),(0,l.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0\u4e00\u4e9b simbot \u6807\u51c6\u6d88\u606f\u7c7b\u578b\u4ee5\u5916\uff0cKOOK\u7ec4\u4ef6\u4e5f\u63d0\u4f9b\u4e86\u4e00\u4e9b\u4e13\u5c5e\u7684\u6d88\u606f\u7c7b\u578b\u6765\u6ee1\u8db3\u66f4\u5168\u9762\u7684\u6d88\u606f\u53d1\u9001\u9700\u6c42\u3002"),(0,l.kt)("admonition",{title:"\u7c7b\u578b",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u8fd9\u4e9b\u6d88\u606f\u7c7b\u578b\u901a\u5e38\u5b9e\u73b0\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"KookMessageElement")," \u63a5\u53e3\uff0c\u5e76\u4e14\u4ee5 ",(0,l.kt)("inlineCode",{parentName:"p"},"Kook")," \u4f5c\u4e3a\u7c7b\u540d\u524d\u7f00\u3002")),(0,l.kt)("h4",{id:"kookassetmessage"},"KookAssetMessage"),(0,l.kt)("p",null,"\u63d0\u4f9b\u4e00\u4e2a API \u4e2d\u4e0a\u4f20\u5f97\u5230\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"Asset")," \uff08\u9644\u4ef6\uff09\u548c\u5b83\u7684\u7c7b\u578b\u5e76\u4f5c\u4e3a\u6d88\u606f\u53d1\u9001\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\n// \u901a\u8fc7API\u81ea\u884c\u4e0a\u4f20\u4e00\u4e2a\u8d44\u6e90\uff08\u53ef\u4ee5\u7528\u4e8e\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u591a\u6b21\u4e0a\u4f20\uff09\nval asset = CreateAssetApi.create(...).requestBy(...)\n\n// \u53ef\u4ee5\u9009\u62e9\u5b83\u662f\u6587\u4ef6\uff0c\u8fd8\u662f\u56fe\u7247\nval imgMsg = KookAssetImage(asset)\nval assetMsg = KookAsset(asset, MessageType.FILE) // \u5982\u679c\u4e0d\u662f\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u6d88\u606f\u7c7b\u578b\n\nchannel.send(imgMsg)\nchannel.send(assetMsg)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\n// \u901a\u8fc7API\u81ea\u884c\u4e0a\u4f20\u4e00\u4e2a\u8d44\u6e90\uff08\u53ef\u4ee5\u7528\u4e8e\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u591a\u6b21\u4e0a\u4f20\uff09\nvar asset = CreateAssetApi.create(...).requestByBlocking(...);\n\n// \u53ef\u4ee5\u9009\u62e9\u5b83\u662f\u6587\u4ef6\uff0c\u8fd8\u662f\u56fe\u7247\nvar imgMsg = new KookAssetImage(asset);\nvar assetMsg = new KookAsset(asset, MessageType.FILE); // \u5982\u679c\u4e0d\u662f\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u6d88\u606f\u7c7b\u578b\n\nchannel.sendBlocking(imgMsg);\nchannel.sendBlocking(assetMsg);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\n// \u901a\u8fc7API\u81ea\u884c\u4e0a\u4f20\u4e00\u4e2a\u8d44\u6e90\uff08\u53ef\u4ee5\u7528\u4e8e\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u591a\u6b21\u4e0a\u4f20\uff09\nCreateAssetApi.create(...).requestByAsync(...).thenAccept(asset -> {\n // \u53ef\u4ee5\u9009\u62e9\u5b83\u662f\u6587\u4ef6\uff0c\u8fd8\u662f\u56fe\u7247\n var imgMsg = new KookAssetImage(asset);\n var assetMsg = new KookAsset(asset, MessageType.FILE); // \u5982\u679c\u4e0d\u662f\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u6d88\u606f\u7c7b\u578b\n\n channel.sendAsync(imgMsg);\n channel.sendAsync(assetMsg);\n});\n")))),(0,l.kt)("h4",{id:"kookkmarkdownmessage"},"KookKMarkdownMessage"),(0,l.kt)("p",null,"\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"KookKMarkdownMessage")," \u53ef\u4ee5\u505a\u5230\u76f4\u63a5\u53d1\u9001\u4e00\u4e2a\u5b8c\u5168\u81ea\u5b9a\u4e49\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"KMarkdown")," \u6d88\u606f\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n\n// \u81ea\u884c\u6784\u5efa\u4e00\u4e2a KMarkdown\uff0c\u5e76\u76f4\u63a5\u4f5c\u4e3a\u6d88\u606f\u53d1\u9001\u3002\nval kmd = KookKMarkdownMessage(buildKMarkdown {\n bold("\u8fd9\u662f\u7c97\u4f53")\n newLine()\n hide("\u9690\u85cf")\n newLine()\n appendRawMd("\u76f4\u63a5\u62fc\u63a5\u539f\u59cb\u5b57\u7b26\u4e32\uff0c**\u4e0d\u505a\u89e3\u6790**\uff0c_\u4e0d\u505a\u5904\u7406_")\n // \u5176\u4ed6...\n})\n\nchannel.send(kmd)\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u6784\u5efaKMarkdown\nvar builder = new KMarkdownBuilder();\nbuilder.bold("\u52a0\u7c97").newLine();\nbuilder.hide("\u9690\u85cf").newLine();\nbuilder.appendRawMd("\u539f\u59cb\u7684\u6587\u672c\uff0c**\u4e0d\u505a\u5904\u7406**\uff0c_\u76f4\u63a5\u62fc\u63a5_");\nvar kMarkdown = builder.build();\n\nchannel.sendBlocking(new KookKMarkdownMessage(kMarkdown));\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u6784\u5efaKMarkdown\nvar builder = new KMarkdownBuilder();\nbuilder.bold("\u52a0\u7c97").newLine();\nbuilder.hide("\u9690\u85cf").newLine();\nbuilder.appendRawMd("\u539f\u59cb\u7684\u6587\u672c\uff0c**\u4e0d\u505a\u5904\u7406**\uff0c_\u76f4\u63a5\u62fc\u63a5_");\nvar kMarkdown = builder.build();\n\nchannel.sendAsync(new KookKMarkdownMessage(kMarkdown));\n')))),(0,l.kt)("h4",{id:"kookcardmessage"},"KookCardMessage"),(0,l.kt)("p",null,"\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"KookKMarkdownMessage")," \u6765\u53d1\u9001 KOOK \u4e2d\u7684 ",(0,l.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/cardmessage"},"\u5361\u7247\u6d88\u606f"),"\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n\n// \u6784\u5efacard\u6d88\u606f\nval cardMessage = KookCardMessage(buildCardMessage {\n card {\n color = "..."\n theme = Theme.PRIMARY\n modules {\n header("xxx")\n // ...\n }\n // ...\n }\n})\n\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7JSON\u89e3\u6790\nKookCardMessage(CardMessage.decode("{...}")) // card json value\n\nchannel.send(cardMessage)\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u901a\u8fc7\u89e3\u6790\u5361\u7247\u6d88\u606fJSON\u5f97\u5230\u6d88\u606f\u5bf9\u8c61\nvar cardMsg = new KookCardMessage(CardMessage.decode("{...}"));\n\nchannel.sendBlocking(cardMsg);\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u901a\u8fc7\u89e3\u6790\u5361\u7247\u6d88\u606fJSON\u5f97\u5230\u6d88\u606f\u5bf9\u8c61\nvar cardMsg = new KookCardMessage(CardMessage.decode("{...}"));\n\nchannel.sendAsync(cardMsg);\n')))),(0,l.kt)("h4",{id:"kookatallhere"},"KookAtAllHere"),(0,l.kt)("p",null,"KOOK \u4e2d\u6709\u4e00\u4e2a\u63d0\u53ca\u6240\u6709\u5728\u7ebf\u7528\u6237\u7684\u529f\u80fd\uff0c\u5728KMarkdown\u4e2d\u8868\u73b0\u4e3a ",(0,l.kt)("inlineCode",{parentName:"p"},"(met)here(met)"),"\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nchannel.send(KookAtAllHere)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendBlocking(KookAtAllHere.INSTANCE);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendAsync(KookAtAllHere.INSTANCE);\n")))),(0,l.kt)("h4",{id:"kookattachmentmessage"},"KookAttachmentMessage"),(0,l.kt)("p",null,"\u5c06\u6d88\u606f\u4e2d\u7684\u591a\u5a92\u4f53\u6d88\u606f ",(0,l.kt)("inlineCode",{parentName:"p"},"Attachments")," \u4f5c\u4e3a\u6d88\u606f\u5143\u7d20\u53d1\u9001\u7684\u6d88\u606f\u7c7b\u578b\u3002"),(0,l.kt)("admonition",{title:"\u5dee\u5f02",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u4e0e ",(0,l.kt)("inlineCode",{parentName:"p"},"Asset")," \u4e0d\u540c\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Attachments")," \u662f\u51fa\u73b0\u5728\u6d88\u606f\u4e2d\u7684\uff0c\u5305\u62ec\u53d1\u9001\u540e\u6216\u63a5\u6536\u7684\u6d88\u606f\uff0c\u800c ",(0,l.kt)("inlineCode",{parentName:"p"},"Asset")," \u662f\u4f60\u4e3b\u52a8\u4e0a\u4f20\u7684\u8d44\u6e90\u3002")),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nval attachments = ...\n// \u67094\u79cd\u7c7b\u578b\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u4e0e attachements \u5b9e\u9645\u60c5\u51b5\u5339\u914d\u7684\nval attachmentFile = KookAttachmentFile(attachments)\nval attachmentImage = KookAttachmentImage(attachments)\nval attachmentVideo = KookAttachmentVideo(attachments)\nval attachment = KookAttachment(attachments)\n\nchannel.send(attachmentFile)\nchannel.send(attachmentImage)\nchannel.send(attachmentVideo)\nchannel.send(attachment)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar attachments = ...;\n// \u67094\u79cd\u7c7b\u578b\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u4e0e attachements \u5b9e\u9645\u60c5\u51b5\u5339\u914d\u7684\nvar attachmentFile = new KookAttachmentFile(attachments);\nvar attachmentImage = new KookAttachmentImage(attachments);\nvar attachmentVideo = new KookAttachmentVideo(attachments);\nvar attachment = new KookAttachment(attachments);\n\nchannel.sendBlocking(attachmentFile);\nchannel.sendBlocking(attachmentImage);\nchannel.sendBlocking(attachmentVideo);\nchannel.sendBlocking(attachment);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar attachments = ...;\n// \u67094\u79cd\u7c7b\u578b\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u4e0e attachements \u5b9e\u9645\u60c5\u51b5\u5339\u914d\u7684\nvar attachmentFile = new KookAttachmentFile(attachments);\nvar attachmentImage = new KookAttachmentImage(attachments);\nvar attachmentVideo = new KookAttachmentVideo(attachments);\nvar attachment = new KookAttachment(attachments);\n\nchannel.sendAsync(attachmentFile);\nchannel.sendAsync(attachmentImage);\nchannel.sendAsync(attachmentVideo);\nchannel.sendAsync(attachment);\n")))),(0,l.kt)("h3",{id:"\u53d1\u9001\u6d88\u606f-1"},"\u53d1\u9001\u6d88\u606f"),(0,l.kt)("p",null,"TODO"),(0,l.kt)("h3",{id:"\u63a5\u6536\u6d88\u606f-1"},"\u63a5\u6536\u6d88\u606f"),(0,l.kt)("p",null,"TODO"))}k.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[709],{5162:(e,a,t)=>{t.d(a,{Z:()=>r});var n=t(7294),l=t(6010);const s={tabItem:"tabItem_Ymn6"};function r(e){let{children:a,hidden:t,className:r}=e;return n.createElement("div",{role:"tabpanel",className:(0,l.Z)(s.tabItem,r),hidden:t},a)}},4866:(e,a,t)=>{t.d(a,{Z:()=>N});var n=t(7462),l=t(7294),s=t(6010),r=t(2466),o=t(6550),i=t(1980),c=t(7392),u=t(12);function d(e){return function(e){return l.Children.map(e,(e=>{if(!e||(0,l.isValidElement)(e)&&function(e){const{props:a}=e;return!!a&&"object"==typeof a&&"value"in a}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:a,label:t,attributes:n,default:l}}=e;return{value:a,label:t,attributes:n,default:l}}))}function p(e){const{values:a,children:t}=e;return(0,l.useMemo)((()=>{const e=a??d(t);return function(e){const a=(0,c.l)(e,((e,a)=>e.value===a.value));if(a.length>0)throw new Error(`Docusaurus error: Duplicate values "${a.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[a,t])}function m(e){let{value:a,tabValues:t}=e;return t.some((e=>e.value===a))}function k(e){let{queryString:a=!1,groupId:t}=e;const n=(0,o.k6)(),s=function(e){let{queryString:a=!1,groupId:t}=e;if("string"==typeof a)return a;if(!1===a)return null;if(!0===a&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:a,groupId:t});return[(0,i._X)(s),(0,l.useCallback)((e=>{if(!s)return;const a=new URLSearchParams(n.location.search);a.set(s,e),n.replace({...n.location,search:a.toString()})}),[s,n])]}function v(e){const{defaultValue:a,queryString:t=!1,groupId:n}=e,s=p(e),[r,o]=(0,l.useState)((()=>function(e){let{defaultValue:a,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(a){if(!m({value:a,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${a}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return a}const n=t.find((e=>e.default))??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:a,tabValues:s}))),[i,c]=k({queryString:t,groupId:n}),[d,v]=function(e){let{groupId:a}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(a),[n,s]=(0,u.Nk)(t);return[n,(0,l.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:n}),g=(()=>{const e=i??d;return m({value:e,tabValues:s})?e:null})();(0,l.useLayoutEffect)((()=>{g&&o(g)}),[g]);return{selectedValue:r,selectValue:(0,l.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);o(e),c(e),v(e)}),[c,v,s]),tabValues:s}}var g=t(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:a,block:t,selectedValue:o,selectValue:i,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.o5)(),p=e=>{const a=e.currentTarget,t=u.indexOf(a),n=c[t].value;n!==o&&(d(a),i(n))},m=e=>{let a=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const t=u.indexOf(e.currentTarget)+1;a=u[t]??u[0];break}case"ArrowLeft":{const t=u.indexOf(e.currentTarget)-1;a=u[t]??u[u.length-1];break}}a?.focus()};return l.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":t},a)},c.map((e=>{let{value:a,label:t,attributes:r}=e;return l.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===a?0:-1,"aria-selected":o===a,key:a,ref:e=>u.push(e),onKeyDown:m,onClick:p},r,{className:(0,s.Z)("tabs__item",h.tabItem,r?.className,{"tabs__item--active":o===a})}),t??a)})))}function T(e){let{lazy:a,children:t,selectedValue:n}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(a){const e=s.find((e=>e.props.value===n));return e?(0,l.cloneElement)(e,{className:"margin-top--md"}):null}return l.createElement("div",{className:"margin-top--md"},s.map(((e,a)=>(0,l.cloneElement)(e,{key:a,hidden:e.props.value!==n}))))}function I(e){const a=v(e);return l.createElement("div",{className:(0,s.Z)("tabs-container",h.tabList)},l.createElement(b,(0,n.Z)({},e,a)),l.createElement(T,(0,n.Z)({},e,a)))}function N(e){const a=(0,g.Z)();return l.createElement(I,(0,n.Z)({key:String(a)},e))}},7102:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>u,contentTitle:()=>i,default:()=>k,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var n=t(7462),l=(t(7294),t(3905)),s=t(4866),r=t(5162);t(614),t(2965);const o={title:"\u6d88\u606f",sidebar_position:10,toc_max_heading_level:4},i=void 0,c={unversionedId:"basic/message",id:"basic/message",title:"\u6d88\u606f",description:"\u4f5c\u4e3a\u4e00\u4e2a\u804a\u5929\u8f6f\u4ef6\u7684bot\uff0c\u6d88\u606f\u7684\u63a5\u6536\u3001\u5904\u7406\u4e0e\u53d1\u9001\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u3002\u5728 KOOK \u7ec4\u4ef6\u4e2d\uff0c\u6211\u4eec\u7406\u6240\u5e94\u5f53\u7684\u63d0\u4f9b\u4e86\u8fd9\u65b9\u9762\u7684\u80fd\u529b\u3002",source:"@site/docs/basic/message.md",sourceDirName:"basic",slug:"/basic/message",permalink:"/docs/basic/message",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/basic/message.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:10,frontMatter:{title:"\u6d88\u606f",sidebar_position:10,toc_max_heading_level:4},sidebar:"tutorialSidebar",previous:{title:"BOT\u914d\u7f6e\u6587\u4ef6",permalink:"/docs/bot-config/"},next:{title:"\u89d2\u8272\u64cd\u4f5c",permalink:"/docs/basic/role"}},u={},d=[{value:"API\u3001\u6807\u51c6\u5e93",id:"api\u6807\u51c6\u5e93",level:2},{value:"\u53d1\u9001\u6d88\u606f",id:"\u53d1\u9001\u6d88\u606f",level:3},{value:"\u63a5\u6536\u6d88\u606f",id:"\u63a5\u6536\u6d88\u606f",level:3},{value:"\u6838\u5fc3\u5e93",id:"\u6838\u5fc3\u5e93",level:2},{value:"\u6d88\u606f\u5143\u7d20",id:"\u6d88\u606f\u5143\u7d20",level:3},{value:"PlainText",id:"plaintext",level:4},{value:"ResourceImage & Image",id:"resourceimage--image",level:4},{value:"At",id:"at",level:4},{value:"AtAll",id:"atall",level:4},{value:"Emoji",id:"emoji",level:4},{value:"KookAssetMessage",id:"kookassetmessage",level:4},{value:"KookKMarkdownMessage",id:"kookkmarkdownmessage",level:4},{value:"KookCardMessage",id:"kookcardmessage",level:4},{value:"KookAtAllHere",id:"kookatallhere",level:4},{value:"KookAttachmentMessage",id:"kookattachmentmessage",level:4},{value:"\u53d1\u9001\u6d88\u606f",id:"\u53d1\u9001\u6d88\u606f-1",level:3},{value:"\u63a5\u6536\u6d88\u606f",id:"\u63a5\u6536\u6d88\u606f-1",level:3}],p={toc:d},m="wrapper";function k(e){let{components:a,...t}=e;return(0,l.kt)(m,(0,n.Z)({},p,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"\u4f5c\u4e3a\u4e00\u4e2a\u804a\u5929\u8f6f\u4ef6\u7684bot\uff0c\u6d88\u606f\u7684\u63a5\u6536\u3001\u5904\u7406\u4e0e\u53d1\u9001\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u3002\u5728 KOOK \u7ec4\u4ef6\u4e2d\uff0c\u6211\u4eec\u7406\u6240\u5e94\u5f53\u7684\u63d0\u4f9b\u4e86\u8fd9\u65b9\u9762\u7684\u80fd\u529b\u3002"),(0,l.kt)("h2",{id:"api\u6807\u51c6\u5e93"},"API\u3001\u6807\u51c6\u5e93"),(0,l.kt)("p",null,"\u5728 API \u6a21\u5757\u548c\u6807\u51c6\u5e93\u4e2d\uff0c\u6211\u4eec\u63d0\u4f9b\u4e86\u9488\u5bf9\u5b98\u65b9API\u7684\u5bf9\u5e94\u5b9e\u73b0\uff0c\u56e0\u6b64\u5b98\u65b9\u7684API\u4e2d\u5bf9\u6d88\u606f\u7684\u5904\u7406\u662f\u5982\u4f55\u7684\uff0c\u5728\u8fd9\u4e24\u4e2a\u6a21\u5757\u4e2d\u5c31\u662f\u5982\u4f55\u3002"),(0,l.kt)("h3",{id:"\u53d1\u9001\u6d88\u606f"},"\u53d1\u9001\u6d88\u606f"),(0,l.kt)("admonition",{title:"\u6d88\u606fAPI",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u4e0e\u6d88\u606f\u76f8\u5173\u7684API\u90fd\u5728\u5305\u8def\u5f84 ",(0,l.kt)("inlineCode",{parentName:"p"},"love.forte.simbot.kook.api.message")," \u4e2d\u3002")),(0,l.kt)("p",null,"\u4f60\u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u8fd9\u51e0\u4e2a API \u6765\u53d1\u9001\u6d88\u606f\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"SendChannelMessageApi"),": \u53d1\u9001\u9891\u9053\u804a\u5929\u6d88\u606f"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"SendDirectMessageApi"),": \u53d1\u9001\u79c1\u4fe1\u804a\u5929\u6d88\u606f")),(0,l.kt)("p",null,"\u5b83\u4eec\u7684\u5404\u4e2a\u53c2\u6570\u7b49\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\u4f60\u53ef\u4ee5\u5728 ",(0,l.kt)("a",{parentName:"p",href:"https://docs.simbot.forte.love/components/kook/"},"API\u6587\u6863")," \u4e2d\u627e\u5230\uff0c\u8fd9\u91cc\u5c31\u4e0d\u518d\u8d58\u8ff0\u4e86\u3002\n\u4ee5 ",(0,l.kt)("inlineCode",{parentName:"p"},"SendChannelMessageApi")," \u4e3a\u4f8b\uff0c\u63d0\u4f9b\u7b80\u5355\u7684\u793a\u4f8b\uff1a"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\nval client = HttpClient(CIO) {\n // config...\n}\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nval authorization = "Bot xxxxxxxxxx"\n\n// \u6784\u5efa\u8981\u8bf7\u6c42\u7684API\uff0c\u5927\u90e8\u5206API\u90fd\u6709\u4e00\u4e9b\u53ef\u9009\u6216\u5fc5\u987b\u7684\u53c2\u6570\u3002\nval api = SendChannelMessageApi.create(targetId = "\u76ee\u6807ID", content = "\u6d88\u606f\u5185\u5bb9")\n\n// \u6216\u5176\u4ed6\u6784\u5efa\u65b9\u5f0f\nSendChannelMessageApi.create {\n content = ""\n type = 9\n type(SendMessageType.KMARKDOWN)\n nonce = "nonce"\n quote = "quote"\n tempTargetId = "tempTargetId"\n}\n\n// \u5f97\u5230\u7ed3\u679c\nval result = api.requestData(client, authorization)\nprintln("result = $result")\nprintln("result.nonce = ${result.nonce}")\nprintln("result.msgId = ${result.msgId}")\nprintln("result.msgTimestamp = ${result.msgTimestamp}")\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = "Bot xxxxxxxxxx";\n\n// \u6784\u5efaapi\nvar api = SendChannelMessageApi.create("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\n// \u6216\u5176\u4ed6\u91cd\u8f7d\uff1a\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9", "Quote\u5f15\u7528ID", "nonce", "tempTargetId");\n// \u6216\u4f7f\u7528builder\uff1a\nSendChannelMessageApi.builder("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9")\n .type(SendMessageType.KMARKDOWN)\n .content("content")\n .quote("quote")\n .nonce("nonce")\n .tempTargetId("tempTargetId").build();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\nvar result = api.requestDataBlocking(client, authorization);\nSystem.out.println("result.getMsgId() = " + result.getMsgId());\nSystem.out.println("result.getNonce() = " + result.getNonce());\nSystem.out.println("result.getMsgTimestamp() = " + result.getMsgTimestamp());\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u5728Java\u4e2d\u6784\u5efa\u6216\u83b7\u53d6\u4e00\u4e2a Ktor \u7684 HttpClient\u3002\n// \u7528\u4e8e\u8bf7\u6c42\u7684 Ktor HttpClient\uff0c\u5982\u6709\u5fc5\u8981\u5219\u9700\u8981\u81ea\u884c\u5f15\u5165\u5e76\u9009\u62e9\u9700\u8981\u4f7f\u7528\u7684\u5f15\u64ce\u3002\n// \u53c2\u8003\uff1ahttps://ktor.io/docs/http-client-engines.html\n// \u6b64\u5904\u4ee5 ktor-cio \u5f15\u64ce\u4e3a\u4f8b\u3002\nvar client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> {\n // config...\n return Unit.INSTANCE;\n });\n\n// \u9274\u6743\u4fe1\u606f\n// \'Bot\' \u540e\u9762\u8ddf\u7684\u662fbot\u7684token\uff0c\u53c2\u8003 https://developer.kookapp.cn/doc/reference\nvar authorization = "Bot xxxxxxxxxx";\n\n// \u6784\u5efaapi\nvar api = SendChannelMessageApi.create("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\n// \u6216\u5176\u4ed6\u91cd\u8f7d\uff1a\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9");\nSendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), "\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9", "Quote\u5f15\u7528ID", "nonce", "tempTargetId");\n// \u6216\u4f7f\u7528builder\uff1a\nSendChannelMessageApi.builder("\u76ee\u6807ID", "\u6d88\u606f\u5185\u5bb9")\n .type(SendMessageType.KMARKDOWN)\n .content("content")\n .quote("quote")\n .nonce("nonce")\n .tempTargetId("tempTargetId").build();\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\napi.requestDataAsync(client, authorization).thenAccept(result -> {\n // \u53d1\u9001\u540e\u7684\u7ed3\u679c\n System.out.println("result = " + result);\n System.out.println("result.getMsgId() = " + result.getMsgId());\n System.out.println("result.getNonce() = " + result.getNonce());\n System.out.println("result.getMsgTimestamp() = " + result.getMsgTimestamp());\n});\n')))),(0,l.kt)("admonition",{title:"USE BOT",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u5728\u6807\u51c6\u5e93\u4e2d\uff0c\u4f60\u4e5f\u53ef\u4ee5\u6784\u5efa\u4e00\u4e2a ",(0,l.kt)("inlineCode",{parentName:"p"},"Bot")," \u540e\u76f4\u63a5\u901a\u8fc7 Bot \u4f5c\u4e3a\u8bf7\u6c42\u7684\u51ed\u8bc1\u6765\u6e90\uff0c\u800c\u4e0d\u518d\u9700\u8981\u624b\u52a8\u51c6\u5907 ",(0,l.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u548c ",(0,l.kt)("inlineCode",{parentName:"p"},"authorization")," \u4e86\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {\n // \u914d\u7f6e...\n}\n\n// \u6784\u5efaapi...\nval api = ...\n\n// \u5f97\u5230\u7ed3\u679c\nval result = api.requestBy(bot)\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi...\nvar api = ...\n \n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\nvar result = api.requestByBlocking(bot);\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",{parentName:"admonition"},(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\n// \u6784\u5efaapi...\nvar api = ...\n\n// \u8bf7\u6c42\u5e76\u5f97\u5230\u7ed3\u679c\napi.requestByAsync(bot).thenAccept(result -> {\n // ...\n});\n'))))),(0,l.kt)("h3",{id:"\u63a5\u6536\u6d88\u606f"},"\u63a5\u6536\u6d88\u606f"),(0,l.kt)("p",null,"\u60f3\u8981\u63a5\u6536\u6d88\u606f\uff0c\u9996\u5148\u9700\u8981\u4f7f\u7528\u6838\u5fc3\u5e93\u6ce8\u518c\u5e76\u542f\u52a8\u4e00\u4e2abot\u6765\u8ba2\u9605\u4e8b\u4ef6\u3002\u901a\u8fc7\u8ba2\u9605\u6d88\u606f\u4e8b\u4ef6\uff0c\u6211\u4eec\u4fbf\u53ef\u4ee5\u63a5\u6536\u5230\u6d88\u606f\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {\n // \u914d\u7f6e...\n}\n\nbot.processor { raw -> // this: Event, raw: String\n println("\u539f\u59cbJSON: $raw")\n println("event: $this")\n println("event.extra: ${this.extra}")\n println("content: ${this.content}")\n}\n\nbot.startAndJoin()\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\nbot.blockingProcessor(TextEventExtra.class, (event, raw) -> {\n System.out.println("raw = " + raw);\n System.out.println("event = " + event);\n System.out.println("event.extra = " + event.getExtra());\n System.out.println("content = " + event.getContent());\n});\n\nbot.startBlocking();\nbot.joinBlocking();\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'// \u51c6\u5907Ticket\nvar ticket = Ticket.botWsTicket("CLIENT_ID", "TOKEN");\n\n// \u914d\u7f6e\u8fc7\u7a0b\u7701\u7565...\n\n// \u6784\u5efabot\nvar bot = BotFactory.create(ticket);\n\nbot.asyncProcessor(TextEventExtra.class, (event, raw) -> {\n System.out.println("raw = " + raw);\n System.out.println("event = " + event);\n System.out.println("event.extra = " + event.getExtra());\n System.out.println("content = " + event.getContent());\n return CompletableFuture.completedFuture(null);\n});\n\nbot.startAsync().join();\n')))),(0,l.kt)("p",null,"\u5176\u4e2d\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"content")," \u4fbf\u662f\u6d88\u606f\u5185\u5bb9\u4e86\u3002\u914d\u5408\u4e8b\u4ef6\u4e2d\u5176\u4ed6\u5c5e\u6027\u4fbf\u53ef\u4ee5\u89e3\u6790\u3001\u5904\u7406\u6d88\u606f\u5185\u5bb9\u4e86\u3002"),(0,l.kt)("h2",{id:"\u6838\u5fc3\u5e93"},"\u6838\u5fc3\u5e93"),(0,l.kt)("p",null,"\u5728\u6838\u5fc3\u5e93\u4e2d\uff0c\u5bf9\u6d88\u606f\u7684\u53d1\u9001\u548c\u63a5\u6536\u90fd\u6709\u7740 simbot API \u7684\u98ce\u683c\u3002"),(0,l.kt)("h3",{id:"\u6d88\u606f\u5143\u7d20"},"\u6d88\u606f\u5143\u7d20"),(0,l.kt)("p",null,"KOOK\u7ec4\u4ef6\u6838\u5fc3\u5e93\u4f5c\u4e3a simbot \u7684\u7ec4\u4ef6\u5e93\u4e4b\u4e00\uff0c\u81ea\u7136\u4f1a\u5bf9\u6807\u51c6\u6d88\u606f\u5143\u7d20\u8fdb\u884c\u90e8\u5206\u652f\u6301\u5e76\u63d0\u4f9b\u4e00\u4e9b\u5176\u4e13\u5c5e\u7684\u6d88\u606f\u5143\u7d20\u7c7b\u578b\u3002\u9996\u5148\u6765\u770b\u770b\u517c\u5bb9\u7684\u6807\u51c6\u6d88\u606f\u5143\u7d20\uff1a"),(0,l.kt)("h4",{id:"plaintext"},"PlainText"),(0,l.kt)("p",null,"\u6587\u672c\u6d88\u606f\u3002\u8fd9\u65e0\u9700\u591a\u8a00\uff0c\u6587\u672c\u6d88\u606f\u81ea\u7136\u80fd\u591f\u88ab\u652f\u6301\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n \nchannel.send("\u6587\u672c\u6d88\u606f")\nchannel.send("\u6587\u672c\u6d88\u606f".toText())\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n \nchannel.sendBlocking("\u6587\u672c\u6d88\u606f");\nchannel.sendBlocking(Text.of("\u6587\u672c\u6d88\u606f"));\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n \nchannel.sendAsync("\u6587\u672c\u6d88\u606f");\nchannel.sendAsync(Text.of("\u6587\u672c\u6d88\u606f"));\n')))),(0,l.kt)("h4",{id:"resourceimage--image"},"ResourceImage & Image"),(0,l.kt)("p",null,"\u56fe\u7247\u6d88\u606f\u3002\u53ef\u4ee5\u7528\u6765\u53d1\u9001\u56fe\u7247\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n\nchannel.send(Path("/xx/img.jpg").toResource().toImage())\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\nvar path = Paths.get("/xx/img.jpg");\nvar resource = Resource.of(path);\nvar resourceImage = Image.of(resource);\n\nchannel.sendAsync(resourceImage);\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\nvar path = Paths.get("/xx/img.jpg");\nvar resource = Resource.of(path);\nvar resourceImage = Image.of(resource);\n\nchannel.sendAsync(resourceImage);\n')))),(0,l.kt)("h4",{id:"at"},"At"),(0,l.kt)("p",null,"\u63d0\u53ca\u3002\u53ef\u4ee5\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"At")," \u63d0\u53ca\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"\u7528\u6237"),"(\u9ed8\u8ba4)\u3001\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"\u9891\u9053"),"\u6216\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"\u89d2\u8272"),"\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nval atUser = At(123.ID)\nval atChannel = At(123.ID, KookMessages.AT_TYPE_CHANNEL)\n// \u6216\uff1aKookMessages.atChannel(123.ID)\nval atRole = At(123.ID, KookMessages.AT_TYPE_ROLE)\n// \u6216\uff1aKookMessages.atRole(123.ID)\n\nchannel.send(atUser)\nchannel.send(atUser + atChannel + atRole)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar atUser = new At(Identifies.ID(123));\nvar atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL);\n// \u6216\uff1aKookMessages.atChannel(Identifies.ID(123));\nvar atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE);\n// \u6216\uff1aKookMessages.atRole(Identifies.ID(123));\n\nchannel.sendBlocking(atUser);\nchannel.sendBlocking(Messages.toMessages(atUser, atChannel, atRole));\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar atUser = new At(Identifies.ID(123));\nvar atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL);\n// \u6216\uff1aKookMessages.atChannel(Identifies.ID(123));\nvar atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE);\n// \u6216\uff1aKookMessages.atRole(Identifies.ID(123));\n\nchannel.sendAsync(atUser);\nchannel.sendAsync(Messages.toMessages(atUser, atChannel, atRole));\n")))),(0,l.kt)("h4",{id:"atall"},"AtAll"),(0,l.kt)("p",null,"\u63d0\u53ca\u3002\u53ef\u4ee5\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"AtAll")," \u63d0\u53ca\u6240\u6709\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nchannel.send(AtAll)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendBlocking(AtAll.INSTANCE);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendAsync(AtAll.INSTANCE);\n")))),(0,l.kt)("h4",{id:"emoji"},"Emoji"),(0,l.kt)("p",null,"emoji\u3002\u662f\u6307 ",(0,l.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/kmarkdown"},"KMarkdown")," \u4e2d\u6240\u8ff0\u7684 ",(0,l.kt)("strong",{parentName:"p"},'"emoji"')," \uff08",(0,l.kt)("inlineCode",{parentName:"p"},":emoji:"),"\uff09\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nchannel.send(Emoji(123.ID))\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendBlocking(new Emoji(Identifies.ID(123)));\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendAsync(new Emoji(Identifies.ID(123)));\n")))),(0,l.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0\u4e00\u4e9b simbot \u6807\u51c6\u6d88\u606f\u7c7b\u578b\u4ee5\u5916\uff0cKOOK\u7ec4\u4ef6\u4e5f\u63d0\u4f9b\u4e86\u4e00\u4e9b\u4e13\u5c5e\u7684\u6d88\u606f\u7c7b\u578b\u6765\u6ee1\u8db3\u66f4\u5168\u9762\u7684\u6d88\u606f\u53d1\u9001\u9700\u6c42\u3002"),(0,l.kt)("admonition",{title:"\u7c7b\u578b",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u8fd9\u4e9b\u6d88\u606f\u7c7b\u578b\u901a\u5e38\u5b9e\u73b0\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"KookMessageElement")," \u63a5\u53e3\uff0c\u5e76\u4e14\u4ee5 ",(0,l.kt)("inlineCode",{parentName:"p"},"Kook")," \u4f5c\u4e3a\u7c7b\u540d\u524d\u7f00\u3002")),(0,l.kt)("h4",{id:"kookassetmessage"},"KookAssetMessage"),(0,l.kt)("p",null,"\u63d0\u4f9b\u4e00\u4e2a API \u4e2d\u4e0a\u4f20\u5f97\u5230\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"Asset")," \uff08\u9644\u4ef6\uff09\u548c\u5b83\u7684\u7c7b\u578b\u5e76\u4f5c\u4e3a\u6d88\u606f\u53d1\u9001\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\n// \u901a\u8fc7API\u81ea\u884c\u4e0a\u4f20\u4e00\u4e2a\u8d44\u6e90\uff08\u53ef\u4ee5\u7528\u4e8e\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u591a\u6b21\u4e0a\u4f20\uff09\nval asset = CreateAssetApi.create(...).requestBy(...)\n\n// \u53ef\u4ee5\u9009\u62e9\u5b83\u662f\u6587\u4ef6\uff0c\u8fd8\u662f\u56fe\u7247\nval imgMsg = KookAssetImage(asset)\nval assetMsg = KookAsset(asset, MessageType.FILE) // \u5982\u679c\u4e0d\u662f\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u6d88\u606f\u7c7b\u578b\n\nchannel.send(imgMsg)\nchannel.send(assetMsg)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\n// \u901a\u8fc7API\u81ea\u884c\u4e0a\u4f20\u4e00\u4e2a\u8d44\u6e90\uff08\u53ef\u4ee5\u7528\u4e8e\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u591a\u6b21\u4e0a\u4f20\uff09\nvar asset = CreateAssetApi.create(...).requestByBlocking(...);\n\n// \u53ef\u4ee5\u9009\u62e9\u5b83\u662f\u6587\u4ef6\uff0c\u8fd8\u662f\u56fe\u7247\nvar imgMsg = new KookAssetImage(asset);\nvar assetMsg = new KookAsset(asset, MessageType.FILE); // \u5982\u679c\u4e0d\u662f\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u6d88\u606f\u7c7b\u578b\n\nchannel.sendBlocking(imgMsg);\nchannel.sendBlocking(assetMsg);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\n// \u901a\u8fc7API\u81ea\u884c\u4e0a\u4f20\u4e00\u4e2a\u8d44\u6e90\uff08\u53ef\u4ee5\u7528\u4e8e\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u591a\u6b21\u4e0a\u4f20\uff09\nCreateAssetApi.create(...).requestByAsync(...).thenAccept(asset -> {\n // \u53ef\u4ee5\u9009\u62e9\u5b83\u662f\u6587\u4ef6\uff0c\u8fd8\u662f\u56fe\u7247\n var imgMsg = new KookAssetImage(asset);\n var assetMsg = new KookAsset(asset, MessageType.FILE); // \u5982\u679c\u4e0d\u662f\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u6d88\u606f\u7c7b\u578b\n\n channel.sendAsync(imgMsg);\n channel.sendAsync(assetMsg);\n});\n")))),(0,l.kt)("h4",{id:"kookkmarkdownmessage"},"KookKMarkdownMessage"),(0,l.kt)("p",null,"\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"KookKMarkdownMessage")," \u53ef\u4ee5\u505a\u5230\u76f4\u63a5\u53d1\u9001\u4e00\u4e2a\u5b8c\u5168\u81ea\u5b9a\u4e49\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"KMarkdown")," \u6d88\u606f\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n\n// \u81ea\u884c\u6784\u5efa\u4e00\u4e2a KMarkdown\uff0c\u5e76\u76f4\u63a5\u4f5c\u4e3a\u6d88\u606f\u53d1\u9001\u3002\nval kmd = KookKMarkdownMessage(buildKMarkdown {\n bold("\u8fd9\u662f\u7c97\u4f53")\n newLine()\n hide("\u9690\u85cf")\n newLine()\n appendRawMd("\u76f4\u63a5\u62fc\u63a5\u539f\u59cb\u5b57\u7b26\u4e32\uff0c**\u4e0d\u505a\u89e3\u6790**\uff0c_\u4e0d\u505a\u5904\u7406_")\n // \u5176\u4ed6...\n})\n\nchannel.send(kmd)\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u6784\u5efaKMarkdown\nvar builder = new KMarkdownBuilder();\nbuilder.bold("\u52a0\u7c97").newLine();\nbuilder.hide("\u9690\u85cf").newLine();\nbuilder.appendRawMd("\u539f\u59cb\u7684\u6587\u672c\uff0c**\u4e0d\u505a\u5904\u7406**\uff0c_\u76f4\u63a5\u62fc\u63a5_");\nvar kMarkdown = builder.build();\n\nchannel.sendBlocking(new KookKMarkdownMessage(kMarkdown));\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u6784\u5efaKMarkdown\nvar builder = new KMarkdownBuilder();\nbuilder.bold("\u52a0\u7c97").newLine();\nbuilder.hide("\u9690\u85cf").newLine();\nbuilder.appendRawMd("\u539f\u59cb\u7684\u6587\u672c\uff0c**\u4e0d\u505a\u5904\u7406**\uff0c_\u76f4\u63a5\u62fc\u63a5_");\nvar kMarkdown = builder.build();\n\nchannel.sendAsync(new KookKMarkdownMessage(kMarkdown));\n')))),(0,l.kt)("h4",{id:"kookcardmessage"},"KookCardMessage"),(0,l.kt)("p",null,"\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"KookKMarkdownMessage")," \u6765\u53d1\u9001 KOOK \u4e2d\u7684 ",(0,l.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/cardmessage"},"\u5361\u7247\u6d88\u606f"),"\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},'val channel = ...\n\n// \u6784\u5efacard\u6d88\u606f\nval cardMessage = KookCardMessage(buildCardMessage {\n card {\n color = "..."\n theme = Theme.PRIMARY\n modules {\n header("xxx")\n // ...\n }\n // ...\n }\n})\n\n// \u4e5f\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7JSON\u89e3\u6790\nKookCardMessage(CardMessage.decode("{...}")) // card json value\n\nchannel.send(cardMessage)\n'))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u901a\u8fc7\u89e3\u6790\u5361\u7247\u6d88\u606fJSON\u5f97\u5230\u6d88\u606f\u5bf9\u8c61\nvar cardMsg = new KookCardMessage(CardMessage.decode("{...}"));\n\nchannel.sendBlocking(cardMsg);\n'))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},'var channel = ...\n\n// \u901a\u8fc7\u89e3\u6790\u5361\u7247\u6d88\u606fJSON\u5f97\u5230\u6d88\u606f\u5bf9\u8c61\nvar cardMsg = new KookCardMessage(CardMessage.decode("{...}"));\n\nchannel.sendAsync(cardMsg);\n')))),(0,l.kt)("h4",{id:"kookatallhere"},"KookAtAllHere"),(0,l.kt)("p",null,"KOOK \u4e2d\u6709\u4e00\u4e2a\u63d0\u53ca\u6240\u6709\u5728\u7ebf\u7528\u6237\u7684\u529f\u80fd\uff0c\u5728KMarkdown\u4e2d\u8868\u73b0\u4e3a ",(0,l.kt)("inlineCode",{parentName:"p"},"(met)here(met)"),"\u3002"),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nchannel.send(KookAtAllHere)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendBlocking(KookAtAllHere.INSTANCE);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nchannel.sendAsync(KookAtAllHere.INSTANCE);\n")))),(0,l.kt)("h4",{id:"kookattachmentmessage"},"KookAttachmentMessage"),(0,l.kt)("p",null,"\u5c06\u6d88\u606f\u4e2d\u7684\u591a\u5a92\u4f53\u6d88\u606f ",(0,l.kt)("inlineCode",{parentName:"p"},"Attachments")," \u4f5c\u4e3a\u6d88\u606f\u5143\u7d20\u53d1\u9001\u7684\u6d88\u606f\u7c7b\u578b\u3002"),(0,l.kt)("admonition",{title:"\u5dee\u5f02",type:"note"},(0,l.kt)("p",{parentName:"admonition"},"\u4e0e ",(0,l.kt)("inlineCode",{parentName:"p"},"Asset")," \u4e0d\u540c\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Attachments")," \u662f\u51fa\u73b0\u5728\u6d88\u606f\u4e2d\u7684\uff0c\u5305\u62ec\u53d1\u9001\u540e\u6216\u63a5\u6536\u7684\u6d88\u606f\uff0c\u800c ",(0,l.kt)("inlineCode",{parentName:"p"},"Asset")," \u662f\u4f60\u4e3b\u52a8\u4e0a\u4f20\u7684\u8d44\u6e90\u3002")),(0,l.kt)(s.Z,{groupId:"code",mdxType:"Tabs"},(0,l.kt)(r.Z,{value:"Kotlin",attributes:{"data-value":"Kotlin"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-kotlin"},"val channel = ...\n\nval attachments = ...\n// \u67094\u79cd\u7c7b\u578b\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u4e0e attachements \u5b9e\u9645\u60c5\u51b5\u5339\u914d\u7684\nval attachmentFile = KookAttachmentFile(attachments)\nval attachmentImage = KookAttachmentImage(attachments)\nval attachmentVideo = KookAttachmentVideo(attachments)\nval attachment = KookAttachment(attachments)\n\nchannel.send(attachmentFile)\nchannel.send(attachmentImage)\nchannel.send(attachmentVideo)\nchannel.send(attachment)\n"))),(0,l.kt)(r.Z,{value:"Java",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar attachments = ...;\n// \u67094\u79cd\u7c7b\u578b\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u4e0e attachements \u5b9e\u9645\u60c5\u51b5\u5339\u914d\u7684\nvar attachmentFile = new KookAttachmentFile(attachments);\nvar attachmentImage = new KookAttachmentImage(attachments);\nvar attachmentVideo = new KookAttachmentVideo(attachments);\nvar attachment = new KookAttachment(attachments);\n\nchannel.sendBlocking(attachmentFile);\nchannel.sendBlocking(attachmentImage);\nchannel.sendBlocking(attachmentVideo);\nchannel.sendBlocking(attachment);\n"))),(0,l.kt)(r.Z,{value:"Java Async",attributes:{"data-value":"Java"},mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-java"},"var channel = ...\n\nvar attachments = ...;\n// \u67094\u79cd\u7c7b\u578b\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u4e0e attachements \u5b9e\u9645\u60c5\u51b5\u5339\u914d\u7684\nvar attachmentFile = new KookAttachmentFile(attachments);\nvar attachmentImage = new KookAttachmentImage(attachments);\nvar attachmentVideo = new KookAttachmentVideo(attachments);\nvar attachment = new KookAttachment(attachments);\n\nchannel.sendAsync(attachmentFile);\nchannel.sendAsync(attachmentImage);\nchannel.sendAsync(attachmentVideo);\nchannel.sendAsync(attachment);\n")))),(0,l.kt)("h3",{id:"\u53d1\u9001\u6d88\u606f-1"},"\u53d1\u9001\u6d88\u606f"),(0,l.kt)("p",null,"TODO"),(0,l.kt)("h3",{id:"\u63a5\u6536\u6d88\u606f-1"},"\u63a5\u6536\u6d88\u606f"),(0,l.kt)("p",null,"TODO"))}k.isMDXComponent=!0},2965:e=>{e.exports=JSON.parse('{"i":"3.2.0.0-alpha.8"}')}}]); \ No newline at end of file diff --git a/assets/js/b7db9b3a.f98f41f7.js b/assets/js/b7db9b3a.b7a7edbc.js similarity index 98% rename from assets/js/b7db9b3a.f98f41f7.js rename to assets/js/b7db9b3a.b7a7edbc.js index 091ff1ee..5ea6aa6a 100644 --- a/assets/js/b7db9b3a.f98f41f7.js +++ b/assets/js/b7db9b3a.b7a7edbc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[210],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},b=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=p(n),b=o,d=u["".concat(s,".").concat(b)]||u[b]||f[b]||i;return n?r.createElement(d,a(a({ref:t},l),{},{components:n})):r.createElement(d,a({ref:t},l))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=b;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const i={title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",sidebar_position:30},a=void 0,c={unversionedId:"basic/unknown-event",id:"basic/unknown-event",title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",description:"TODO",source:"@site/docs/basic/unknown-event.md",sourceDirName:"basic",slug:"/basic/unknown-event",permalink:"/docs/basic/unknown-event",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/basic/unknown-event.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:30,frontMatter:{title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",sidebar_position:30},sidebar:"tutorialSidebar",previous:{title:"\u89d2\u8272\u64cd\u4f5c",permalink:"/docs/basic/role"}},s={},p=[],l={toc:p},u="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"TODO"))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[210],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},b=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=p(n),b=o,d=u["".concat(s,".").concat(b)]||u[b]||f[b]||i;return n?r.createElement(d,a(a({ref:t},l),{},{components:n})):r.createElement(d,a({ref:t},l))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=b;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const i={title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",sidebar_position:30},a=void 0,c={unversionedId:"basic/unknown-event",id:"basic/unknown-event",title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",description:"TODO",source:"@site/docs/basic/unknown-event.md",sourceDirName:"basic",slug:"/basic/unknown-event",permalink:"/docs/basic/unknown-event",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/basic/unknown-event.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:30,frontMatter:{title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",sidebar_position:30},sidebar:"tutorialSidebar",previous:{title:"\u89d2\u8272\u64cd\u4f5c",permalink:"/docs/basic/role"}},s={},p=[],l={toc:p},u="wrapper";function f(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"TODO"))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d597c9d2.84412fac.js b/assets/js/d597c9d2.47643899.js similarity index 99% rename from assets/js/d597c9d2.84412fac.js rename to assets/js/d597c9d2.47643899.js index ca74264b..4d6b6af9 100644 --- a/assets/js/d597c9d2.84412fac.js +++ b/assets/js/d597c9d2.47643899.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[952],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),s=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=s(r),m=a,f=p["".concat(i,".").concat(m)]||p[m]||d[m]||o;return r?n.createElement(f,l(l({ref:t},c),{},{components:r})):n.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var u={};for(var i in t)hasOwnProperty.call(t,i)&&(u[i]=t[i]);u.originalType=e,u[p]="string"==typeof e?e:a,l[1]=u;for(var s=2;s{r.d(t,{Z:()=>l});var n=r(7294),a=r(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:r,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,l),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>w});var n=r(7462),a=r(7294),o=r(6010),l=r(2466),u=r(6550),i=r(1980),s=r(7392),c=r(12);function p(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function d(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??p(r);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const n=(0,u.k6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,i._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function b(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,o=d(e),[l,u]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[i,s]=f({queryString:r,groupId:n}),[p,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,c.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:n}),h=(()=>{const e=i??p;return m({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{h&&u(h)}),[h]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);u(e),s(e),b(e)}),[s,b,o]),tabValues:o}}var h=r(2389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:r,selectedValue:u,selectValue:i,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,l.o5)(),d=e=>{const t=e.currentTarget,r=c.indexOf(t),n=s[r].value;n!==u&&(p(t),i(n))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},s.map((e=>{let{value:t,label:r,attributes:l}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:u===t?0:-1,"aria-selected":u===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},l,{className:(0,o.Z)("tabs__item",v.tabItem,l?.className,{"tabs__item--active":u===t})}),r??t)})))}function g(e){let{lazy:t,children:r,selectedValue:n}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function k(e){const t=b(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",v.tabList)},a.createElement(y,(0,n.Z)({},e,t)),a.createElement(g,(0,n.Z)({},e,t)))}function w(e){const t=(0,h.Z)();return a.createElement(k,(0,n.Z)({key:String(t)},e))}},8234:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>u,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(4866),r(5162);const o={slug:"/",sidebar_position:1},l="\u9996\u9875",u={unversionedId:"home",id:"version-3.0.0.0-alpha.7/home",title:"\u9996\u9875",description:"\u6b22\u8fce\u6765\u5230 Simple Robot \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6\u6587\u6863\u3002",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/home.md",sourceDirName:".",slug:"/",permalink:"/docs/3.0.0.0-alpha.7/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/home.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:1,frontMatter:{slug:"/",sidebar_position:1},sidebar:"tutorialSidebar",next:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/3.0.0.0-alpha.7/quick-start/"}},i={},s=[],c={toc:s},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"\u9996\u9875"},"\u9996\u9875"),(0,a.kt)("p",null,"\u6b22\u8fce\u6765\u5230 Simple Robot \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6\u6587\u6863\u3002"),(0,a.kt)("p",null,"KOOK\u7ec4\u4ef6\u662f\u57fa\u4e8e ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"simbot\u6838\u5fc3\u5e93")," API\u5bf9 ",(0,a.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/reference"},"KOOK\u673a\u5668\u4eba")," \u7684\u5b9e\u73b0\u3002"),(0,a.kt)("admonition",{title:"\u57fa\u672c\u529f\u80fd",type:"info"},(0,a.kt)("p",{parentName:"admonition"},"\u5bf9\u4e8esimbot\u7edd\u5927\u591a\u6570\u7684\u6807\u51c6\u3001\u57fa\u672c\u529f\u80fd\u7684\u4ecb\u7ecd\u90fd\u5728 ",(0,a.kt)("a",{parentName:"p",href:"https://simbot.forte.love/"},"simbot\u5b98\u7f51")," \u4e2d\u3002")))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[952],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),s=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=s(r),m=a,f=p["".concat(i,".").concat(m)]||p[m]||d[m]||o;return r?n.createElement(f,l(l({ref:t},c),{},{components:r})):n.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var u={};for(var i in t)hasOwnProperty.call(t,i)&&(u[i]=t[i]);u.originalType=e,u[p]="string"==typeof e?e:a,l[1]=u;for(var s=2;s{r.d(t,{Z:()=>l});var n=r(7294),a=r(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:r,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,l),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>w});var n=r(7462),a=r(7294),o=r(6010),l=r(2466),u=r(6550),i=r(1980),s=r(7392),c=r(12);function p(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function d(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??p(r);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const n=(0,u.k6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,i._X)(o),(0,a.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(n.location.search);t.set(o,e),n.replace({...n.location,search:t.toString()})}),[o,n])]}function b(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,o=d(e),[l,u]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[i,s]=f({queryString:r,groupId:n}),[p,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,o]=(0,c.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:n}),h=(()=>{const e=i??p;return m({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{h&&u(h)}),[h]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);u(e),s(e),b(e)}),[s,b,o]),tabValues:o}}var h=r(2389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:r,selectedValue:u,selectValue:i,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,l.o5)(),d=e=>{const t=e.currentTarget,r=c.indexOf(t),n=s[r].value;n!==u&&(p(t),i(n))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},s.map((e=>{let{value:t,label:r,attributes:l}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:u===t?0:-1,"aria-selected":u===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},l,{className:(0,o.Z)("tabs__item",v.tabItem,l?.className,{"tabs__item--active":u===t})}),r??t)})))}function g(e){let{lazy:t,children:r,selectedValue:n}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function k(e){const t=b(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",v.tabList)},a.createElement(y,(0,n.Z)({},e,t)),a.createElement(g,(0,n.Z)({},e,t)))}function w(e){const t=(0,h.Z)();return a.createElement(k,(0,n.Z)({key:String(t)},e))}},8234:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>u,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));r(4866),r(5162);const o={slug:"/",sidebar_position:1},l="\u9996\u9875",u={unversionedId:"home",id:"version-3.0.0.0-alpha.7/home",title:"\u9996\u9875",description:"\u6b22\u8fce\u6765\u5230 Simple Robot \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6\u6587\u6863\u3002",source:"@site/versioned_docs/version-3.0.0.0-alpha.7/home.md",sourceDirName:".",slug:"/",permalink:"/docs/3.0.0.0-alpha.7/",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/versioned_docs/version-3.0.0.0-alpha.7/home.md",tags:[],version:"3.0.0.0-alpha.7",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:1,frontMatter:{slug:"/",sidebar_position:1},sidebar:"tutorialSidebar",next:{title:"\u5feb\u901f\u5f00\u59cb",permalink:"/docs/3.0.0.0-alpha.7/quick-start/"}},i={},s=[],c={toc:s},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"\u9996\u9875"},"\u9996\u9875"),(0,a.kt)("p",null,"\u6b22\u8fce\u6765\u5230 Simple Robot \u7684KOOK\u673a\u5668\u4eba\u7ec4\u4ef6\u6587\u6863\u3002"),(0,a.kt)("p",null,"KOOK\u7ec4\u4ef6\u662f\u57fa\u4e8e ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/simple-robot/simpler-robot"},"simbot\u6838\u5fc3\u5e93")," API\u5bf9 ",(0,a.kt)("a",{parentName:"p",href:"https://developer.kookapp.cn/doc/reference"},"KOOK\u673a\u5668\u4eba")," \u7684\u5b9e\u73b0\u3002"),(0,a.kt)("admonition",{title:"\u57fa\u672c\u529f\u80fd",type:"info"},(0,a.kt)("p",{parentName:"admonition"},"\u5bf9\u4e8esimbot\u7edd\u5927\u591a\u6570\u7684\u6807\u51c6\u3001\u57fa\u672c\u529f\u80fd\u7684\u4ecb\u7ecd\u90fd\u5728 ",(0,a.kt)("a",{parentName:"p",href:"https://simbot.forte.love/"},"simbot\u5b98\u7f51")," \u4e2d\u3002")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e139579d.425bfaf6.js b/assets/js/e139579d.08959626.js similarity index 98% rename from assets/js/e139579d.425bfaf6.js rename to assets/js/e139579d.08959626.js index b23fd796..20a76b3c 100644 --- a/assets/js/e139579d.425bfaf6.js +++ b/assets/js/e139579d.08959626.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[837],{3905:(t,e,r)=>{r.d(e,{Zo:()=>l,kt:()=>b});var n=r(7294);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var s=n.createContext({}),p=function(t){var e=n.useContext(s),r=e;return t&&(r="function"==typeof t?t(e):a(a({},e),t)),r},l=function(t){var e=p(t.components);return n.createElement(s.Provider,{value:e},t.children)},u="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var r=t.components,o=t.mdxType,i=t.originalType,s=t.parentName,l=c(t,["components","mdxType","originalType","parentName"]),u=p(r),d=o,b=u["".concat(s,".").concat(d)]||u[d]||m[d]||i;return r?n.createElement(b,a(a({ref:e},l),{},{components:r})):n.createElement(b,a({ref:e},l))}));function b(t,e){var r=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=r.length,a=new Array(i);a[0]=d;var c={};for(var s in e)hasOwnProperty.call(e,s)&&(c[s]=e[s]);c.originalType=t,c[u]="string"==typeof t?t:o,a[1]=c;for(var p=2;p{r.r(e),r.d(e,{assets:()=>s,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},a=void 0,c={unversionedId:"quick-start/simbot-core",id:"quick-start/simbot-core",title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",description:"\u65bd\u5de5\u4e2d",source:"@site/docs/quick-start/simbot-core.md",sourceDirName:"quick-start",slug:"/quick-start/simbot-core",permalink:"/docs/quick-start/simbot-core",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/simbot-core.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:3,frontMatter:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/quick-start/stdlib"},next:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/quick-start/spring-boot"}},s={},p=[],l={toc:p},u="wrapper";function m(t){let{components:e,...r}=t;return(0,o.kt)(u,(0,n.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"TODO",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\u65bd\u5de5\u4e2d"),(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u53ef\u4ee5\u5148\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"spring-boot"},"\u4f7f\u7528SpringBoot"),"\uff0c\u5b83\u76f8\u5f53\u4e8e\u5728 Spring Boot \u73af\u5883\u4e0b\u4f7f\u7528simbot\u6838\u5fc3\u5e93\u3002")),(0,o.kt)("admonition",{title:"\u5176\u4ed6\u53c2\u8003",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u4e5f\u53ef\u4ee5\u53c2\u8003simbot3\u5b98\u7f51\u4e2d\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/quick-start/core"},"\u300a\u4f7f\u7528\u6838\u5fc3\u5e93\u300b"))))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[837],{3905:(t,e,r)=>{r.d(e,{Zo:()=>l,kt:()=>b});var n=r(7294);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var s=n.createContext({}),p=function(t){var e=n.useContext(s),r=e;return t&&(r="function"==typeof t?t(e):a(a({},e),t)),r},l=function(t){var e=p(t.components);return n.createElement(s.Provider,{value:e},t.children)},u="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var r=t.components,o=t.mdxType,i=t.originalType,s=t.parentName,l=c(t,["components","mdxType","originalType","parentName"]),u=p(r),d=o,b=u["".concat(s,".").concat(d)]||u[d]||m[d]||i;return r?n.createElement(b,a(a({ref:e},l),{},{components:r})):n.createElement(b,a({ref:e},l))}));function b(t,e){var r=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=r.length,a=new Array(i);a[0]=d;var c={};for(var s in e)hasOwnProperty.call(e,s)&&(c[s]=e[s]);c.originalType=t,c[u]="string"==typeof t?t:o,a[1]=c;for(var p=2;p{r.r(e),r.d(e,{assets:()=>s,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},a=void 0,c={unversionedId:"quick-start/simbot-core",id:"quick-start/simbot-core",title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",description:"\u65bd\u5de5\u4e2d",source:"@site/docs/quick-start/simbot-core.md",sourceDirName:"quick-start",slug:"/quick-start/simbot-core",permalink:"/docs/quick-start/simbot-core",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/quick-start/simbot-core.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:3,frontMatter:{title:"\u4f7f\u7528simbot\u6838\u5fc3\u5e93",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"\u4f7f\u7528\u6807\u51c6\u5e93",permalink:"/docs/quick-start/stdlib"},next:{title:"\u4f7f\u7528SpringBoot",permalink:"/docs/quick-start/spring-boot"}},s={},p=[],l={toc:p},u="wrapper";function m(t){let{components:e,...r}=t;return(0,o.kt)(u,(0,n.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"TODO",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\u65bd\u5de5\u4e2d"),(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u53ef\u4ee5\u5148\u53c2\u8003 ",(0,o.kt)("a",{parentName:"p",href:"spring-boot"},"\u4f7f\u7528SpringBoot"),"\uff0c\u5b83\u76f8\u5f53\u4e8e\u5728 Spring Boot \u73af\u5883\u4e0b\u4f7f\u7528simbot\u6838\u5fc3\u5e93\u3002")),(0,o.kt)("admonition",{title:"\u5176\u4ed6\u53c2\u8003",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"\u4f60\u4e5f\u53ef\u4ee5\u53c2\u8003simbot3\u5b98\u7f51\u4e2d\u7684 ",(0,o.kt)("a",{parentName:"p",href:"https://simbot.forte.love/docs/quick-start/core"},"\u300a\u4f7f\u7528\u6838\u5fc3\u5e93\u300b"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f44f51f0.e7bd1bfa.js b/assets/js/f44f51f0.953df9b5.js similarity index 98% rename from assets/js/f44f51f0.e7bd1bfa.js rename to assets/js/f44f51f0.953df9b5.js index fa3c034a..34becd13 100644 --- a/assets/js/f44f51f0.e7bd1bfa.js +++ b/assets/js/f44f51f0.953df9b5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[669],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),b=o,d=u["".concat(s,".").concat(b)]||u[b]||f[b]||i;return r?n.createElement(d,a(a({ref:t},p),{},{components:r})):n.createElement(d,a({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=b;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u89d2\u8272\u64cd\u4f5c",sidebar_position:20},a=void 0,c={unversionedId:"basic/role",id:"basic/role",title:"\u89d2\u8272\u64cd\u4f5c",description:"TODO",source:"@site/docs/basic/role.md",sourceDirName:"basic",slug:"/basic/role",permalink:"/docs/basic/role",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/basic/role.md",tags:[],version:"current",lastUpdatedAt:1703580508,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:20,frontMatter:{title:"\u89d2\u8272\u64cd\u4f5c",sidebar_position:20},sidebar:"tutorialSidebar",previous:{title:"\u6d88\u606f",permalink:"/docs/basic/message"},next:{title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",permalink:"/docs/basic/unknown-event"}},s={},l=[],p={toc:l},u="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"TODO"))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[669],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),l=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},b=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(r),b=o,d=u["".concat(s,".").concat(b)]||u[b]||f[b]||i;return r?n.createElement(d,a(a({ref:t},p),{},{components:r})):n.createElement(d,a({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=b;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={title:"\u89d2\u8272\u64cd\u4f5c",sidebar_position:20},a=void 0,c={unversionedId:"basic/role",id:"basic/role",title:"\u89d2\u8272\u64cd\u4f5c",description:"TODO",source:"@site/docs/basic/role.md",sourceDirName:"basic",slug:"/basic/role",permalink:"/docs/basic/role",draft:!1,editUrl:"https://github.com/simple-robot/simbot-component-kook/tree/dev/main/website/docs/basic/role.md",tags:[],version:"current",lastUpdatedAt:1703583235,formattedLastUpdatedAt:"2023\u5e7412\u670826\u65e5",sidebarPosition:20,frontMatter:{title:"\u89d2\u8272\u64cd\u4f5c",sidebar_position:20},sidebar:"tutorialSidebar",previous:{title:"\u6d88\u606f",permalink:"/docs/basic/message"},next:{title:"\u672a\u77e5\u4e8b\u4ef6\u5904\u7406",permalink:"/docs/basic/unknown-event"}},s={},l=[],p={toc:l},u="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"TODO"))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.0a2fb92d.js b/assets/js/runtime~main.0a2fb92d.js new file mode 100644 index 00000000..bf244d9d --- /dev/null +++ b/assets/js/runtime~main.0a2fb92d.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,t,r,a,o,f={},d={};function n(e){var t=d[e];if(void 0!==t)return t.exports;var r=d[e]={exports:{}};return f[e].call(r.exports,r,r.exports,n),r.exports}n.m=f,e=[],n.O=(t,r,a,o)=>{if(!r){var f=1/0;for(b=0;b=o)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(d=!1,o0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[r,a,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);n.r(o);var f={};t=t||[null,r({}),r([]),r(r)];for(var d=2&a&&e;"object"==typeof d&&!~t.indexOf(d);d=r(d))Object.getOwnPropertyNames(d).forEach((t=>f[t]=()=>e[t]));return f.default=()=>e,n.d(o,f),o},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[])),n.u=e=>"assets/js/"+({0:"68a39df5",12:"5535f311",35:"1562c0dc",53:"935f2afb",77:"644ef8b6",125:"3d9c95a4",127:"4ba18d9a",173:"34fd8ba9",195:"c4f5d8e4",210:"b7db9b3a",274:"36eca64c",479:"888645c5",514:"1be78505",586:"2acaa6ae",652:"2293d80f",669:"f44f51f0",709:"ad14e531",775:"2b95aaa0",837:"e139579d",875:"cf8c2932",918:"17896441",920:"1a4e3797",921:"463b5da4",949:"2144e83a",952:"d597c9d2",994:"11dc3ed0"}[e]||e)+"."+{0:"01a5d51e",12:"21429455",35:"357b1712",53:"b0676317",77:"6a7a1607",125:"9081fe18",127:"33d2f624",173:"403fbf4a",195:"2f2b757f",210:"b7a7edbc",274:"3a381028",443:"b73d1732",473:"ab0cb37b",479:"791b9bda",514:"504e41b0",525:"a7b52e37",586:"d5fecc82",652:"ba961163",669:"953df9b5",709:"68823102",775:"0bba184d",837:"08959626",875:"311f3f87",918:"f272705e",920:"b8cbfc88",921:"9a6167a0",949:"97fdfb66",952:"47643899",972:"8e0502aa",994:"bde68ec7"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="website:",n.l=(e,t,r,f)=>{if(a[e])a[e].push(t);else{var d,c;if(void 0!==r)for(var i=document.getElementsByTagName("script"),b=0;b{d.onerror=d.onload=null,clearTimeout(s);var o=a[e];if(delete a[e],d.parentNode&&d.parentNode.removeChild(d),o&&o.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),c&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"918","68a39df5":"0","5535f311":"12","1562c0dc":"35","935f2afb":"53","644ef8b6":"77","3d9c95a4":"125","4ba18d9a":"127","34fd8ba9":"173",c4f5d8e4:"195",b7db9b3a:"210","36eca64c":"274","888645c5":"479","1be78505":"514","2acaa6ae":"586","2293d80f":"652",f44f51f0:"669",ad14e531:"709","2b95aaa0":"775",e139579d:"837",cf8c2932:"875","1a4e3797":"920","463b5da4":"921","2144e83a":"949",d597c9d2:"952","11dc3ed0":"994"}[e]||e,n.p+n.u(e)},(()=>{var e={303:0,532:0};n.f.j=(t,r)=>{var a=n.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var f=n.p+n.u(t),d=new Error;n.l(f,(r=>{if(n.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;d.message="Loading chunk "+t+" failed.\n("+o+": "+f+")",d.name="ChunkLoadError",d.type=o,d.request=f,a[1](d)}}),"chunk-"+t,t)}},n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,f=r[0],d=r[1],c=r[2],i=0;if(f.some((t=>0!==e[t]))){for(a in d)n.o(d,a)&&(n.m[a]=d[a]);if(c)var b=c(n)}for(t&&t(r);i{"use strict";var e,t,a,r,o,d={},f={};function n(e){var t=f[e];if(void 0!==t)return t.exports;var a=f[e]={exports:{}};return d[e].call(a.exports,a,a.exports,n),a.exports}n.m=d,e=[],n.O=(t,a,r,o)=>{if(!a){var d=1/0;for(b=0;b=o)&&Object.keys(n.O).every((e=>n.O[e](a[c])))?a.splice(c--,1):(f=!1,o0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[a,r,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);n.r(o);var d={};t=t||[null,a({}),a([]),a(a)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach((t=>d[t]=()=>e[t]));return d.default=()=>e,n.d(o,d),o},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,a)=>(n.f[a](e,t),t)),[])),n.u=e=>"assets/js/"+({0:"68a39df5",12:"5535f311",35:"1562c0dc",53:"935f2afb",77:"644ef8b6",125:"3d9c95a4",127:"4ba18d9a",173:"34fd8ba9",195:"c4f5d8e4",210:"b7db9b3a",274:"36eca64c",479:"888645c5",514:"1be78505",586:"2acaa6ae",652:"2293d80f",669:"f44f51f0",709:"ad14e531",775:"2b95aaa0",837:"e139579d",875:"cf8c2932",918:"17896441",920:"1a4e3797",921:"463b5da4",949:"2144e83a",952:"d597c9d2",994:"11dc3ed0"}[e]||e)+"."+{0:"62f956e7",12:"2f310a0e",35:"357b1712",53:"b0676317",77:"6a220415",125:"b31d7836",127:"524dcfd6",173:"ba356f90",195:"2f2b757f",210:"f98f41f7",274:"fe42a823",443:"b73d1732",473:"ab0cb37b",479:"3162246e",514:"504e41b0",525:"a7b52e37",586:"d5fecc82",652:"ba961163",669:"e7bd1bfa",709:"0c6e039d",775:"94037bf4",837:"425bfaf6",875:"311f3f87",918:"f272705e",920:"b8cbfc88",921:"62b55e5e",949:"20e4a18d",952:"84412fac",972:"8e0502aa",994:"f120a59a"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},o="website:",n.l=(e,t,a,d)=>{if(r[e])r[e].push(t);else{var f,c;if(void 0!==a)for(var i=document.getElementsByTagName("script"),b=0;b{f.onerror=f.onload=null,clearTimeout(s);var o=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach((e=>e(a))),t)return t(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),c&&document.head.appendChild(f)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"918","68a39df5":"0","5535f311":"12","1562c0dc":"35","935f2afb":"53","644ef8b6":"77","3d9c95a4":"125","4ba18d9a":"127","34fd8ba9":"173",c4f5d8e4:"195",b7db9b3a:"210","36eca64c":"274","888645c5":"479","1be78505":"514","2acaa6ae":"586","2293d80f":"652",f44f51f0:"669",ad14e531:"709","2b95aaa0":"775",e139579d:"837",cf8c2932:"875","1a4e3797":"920","463b5da4":"921","2144e83a":"949",d597c9d2:"952","11dc3ed0":"994"}[e]||e,n.p+n.u(e)},(()=>{var e={303:0,532:0};n.f.j=(t,a)=>{var r=n.o(e,t)?e[t]:void 0;if(0!==r)if(r)a.push(r[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var o=new Promise(((a,o)=>r=e[t]=[a,o]));a.push(r[2]=o);var d=n.p+n.u(t),f=new Error;n.l(d,(a=>{if(n.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=a&&("load"===a.type?"missing":a.type),d=a&&a.target&&a.target.src;f.message="Loading chunk "+t+" failed.\n("+o+": "+d+")",f.name="ChunkLoadError",f.type=o,f.request=d,r[1](f)}}),"chunk-"+t,t)}},n.O.j=t=>0===e[t];var t=(t,a)=>{var r,o,d=a[0],f=a[1],c=a[2],i=0;if(d.some((t=>0!==e[t]))){for(r in f)n.o(f,r)&&(n.m[r]=f[r]);if(c)var b=c(n)}for(t&&t(a);i BOT配置文件 | Simple Robot KOOK组件 - +
-
版本:3.0.0.0-alpha.7

BOT配置文件

待施工

待施工

xxx.bot.json
{
"component": "simbot.kook",
"clientId": "Your client ID",
"token": "Your ws token",
"config": {
"isCompress": true,
"syncPeriods": {
"guildSyncPeriod": 60000,
"memberSyncPeriods": 60000
}
}
}

component

固定值 simbot.kook必填,代表此配置文件为KOOK组件的。

clientId

BOT的 Client ID

token

BOT使用 websocket 模式进行连接的 Token .

在哪儿?

可以在 KOOK开发者平台-应用 中查看。

后日谈

日后此类票据信息会整合到 ticket 字段内。

{
"component": "simbot.kook",
"ticket": {
"clientId": "Your client ID",
"token": "Your ws token"
}
}

config

其他配置,可选。

config.isCompress

是否压缩数据。默认为 true

参考 Gateway API 中的 compress 参数。

config.syncPeriods

缓存对象信息的同步周期配置。

{
"config": {
"syncPeriods": {
"guildSyncPeriod": 180000,
"batchDelay": 0
}
}
}

guildSyncPeriod

对频道服务器进行同步的周期,单位毫秒,大于0时生效。服务器同步的同时会去同步此服务器下的所有频道列表与成员列表。

默认为 180000,即 180000毫秒 -> 180秒 -> 3分钟

进行配置的时候需要注意调用频率上限等相关问题。

batchDelay

guildSyncPeriod 生效时,在数据同步的过程中每一次查询(即批次)后挂起等待的时间,单位毫秒。

默认为 0,即不等待。

通过配置此属性可一定程度上降低触发调用频率限制的风险。


默认值的由来?

一拍脑瓜儿随便写的。

- +
版本:3.0.0.0-alpha.7

BOT配置文件

待施工

待施工

xxx.bot.json
{
"component": "simbot.kook",
"clientId": "Your client ID",
"token": "Your ws token",
"config": {
"isCompress": true,
"syncPeriods": {
"guildSyncPeriod": 60000,
"memberSyncPeriods": 60000
}
}
}

component

固定值 simbot.kook必填,代表此配置文件为KOOK组件的。

clientId

BOT的 Client ID

token

BOT使用 websocket 模式进行连接的 Token .

在哪儿?

可以在 KOOK开发者平台-应用 中查看。

后日谈

日后此类票据信息会整合到 ticket 字段内。

{
"component": "simbot.kook",
"ticket": {
"clientId": "Your client ID",
"token": "Your ws token"
}
}

config

其他配置,可选。

config.isCompress

是否压缩数据。默认为 true

参考 Gateway API 中的 compress 参数。

config.syncPeriods

缓存对象信息的同步周期配置。

{
"config": {
"syncPeriods": {
"guildSyncPeriod": 180000,
"batchDelay": 0
}
}
}

guildSyncPeriod

对频道服务器进行同步的周期,单位毫秒,大于0时生效。服务器同步的同时会去同步此服务器下的所有频道列表与成员列表。

默认为 180000,即 180000毫秒 -> 180秒 -> 3分钟

进行配置的时候需要注意调用频率上限等相关问题。

batchDelay

guildSyncPeriod 生效时,在数据同步的过程中每一次查询(即批次)后挂起等待的时间,单位毫秒。

默认为 0,即不等待。

通过配置此属性可一定程度上降低触发调用频率限制的风险。


默认值的由来?

一拍脑瓜儿随便写的。

+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/index.html b/docs/3.0.0.0-alpha.7/index.html index 8043c7ab..69217ac5 100644 --- a/docs/3.0.0.0-alpha.7/index.html +++ b/docs/3.0.0.0-alpha.7/index.html @@ -4,13 +4,13 @@ 首页 | Simple Robot KOOK组件 - +
-
版本:3.0.0.0-alpha.7

首页

欢迎来到 Simple Robot 的KOOK机器人组件文档。

KOOK组件是基于 simbot核心库 API对 KOOK机器人 的实现。

基本功能

对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。

- +
版本:3.0.0.0-alpha.7

首页

欢迎来到 Simple Robot 的KOOK机器人组件文档。

KOOK组件是基于 simbot核心库 API对 KOOK机器人 的实现。

基本功能

对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。

+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/quick-start/api/index.html b/docs/3.0.0.0-alpha.7/quick-start/api/index.html index cc111409..f6ebc626 100644 --- a/docs/3.0.0.0-alpha.7/quick-start/api/index.html +++ b/docs/3.0.0.0-alpha.7/quick-start/api/index.html @@ -4,15 +4,15 @@ 使用API | Simple Robot KOOK组件 - +
版本:3.0.0.0-alpha.7

使用API

API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。

全变了

API模块在 #82 的过程中会大改, 包括变更API接口的结果实现、事件类型的实现等,以及变更所有API的命名为 GetXxxListApi 风格等。

安装

// 不要忘记使用 Gradle 的 kotlin 插件来允许自动选择对应平台,比如JVM或JS等。
implementation("love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8") // 版本参考下文所述的 Releases
版本参考

版本可前往 Releases 查看并选择。

使用

太多了

我们不会在此处一一列举所有的API做演示,这不太现实。 -所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。

API包装类的命名也存在一定的规律,比如一个 获取某列表 的API通常会被命名为 XxxListRequest

下文会选择一小部分API来做示例。

获取用户频道服务器列表

获取当前用户(BOT)加入的服务器列表 为例。

// 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。
// 参考:https://ktor.io/docs/http-client-engines.html
val client = HttpClient(Java) {
// config...
}

// 鉴权信息
// 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference
val authorization = "Bot xxxxxxxxxx"

// 构建要请求的API,大部分API都有一些可选或必须的参数。
val api = GuildListRequest.create()

// request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常)
val guildListData = api.requestData(client, authorization)

guildListData.items.forEach { ... }
// 也可以直接 guildListData.forEach { ... }
- +所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。

API包装类的命名也存在一定的规律,比如一个 获取某列表 的API通常会被命名为 XxxListRequest

下文会选择一小部分API来做示例。

获取用户频道服务器列表

获取当前用户(BOT)加入的服务器列表 为例。

// 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。
// 参考:https://ktor.io/docs/http-client-engines.html
val client = HttpClient(Java) {
// config...
}

// 鉴权信息
// 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference
val authorization = "Bot xxxxxxxxxx"

// 构建要请求的API,大部分API都有一些可选或必须的参数。
val api = GuildListRequest.create()

// request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常)
val guildListData = api.requestData(client, authorization)

guildListData.items.forEach { ... }
// 也可以直接 guildListData.forEach { ... }
+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/quick-start/index.html b/docs/3.0.0.0-alpha.7/quick-start/index.html index 7bd1aa3f..aa055fd8 100644 --- a/docs/3.0.0.0-alpha.7/quick-start/index.html +++ b/docs/3.0.0.0-alpha.7/quick-start/index.html @@ -4,13 +4,13 @@ 快速开始 | Simple Robot KOOK组件 - +
-
- +
+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/quick-start/simbot-core/index.html b/docs/3.0.0.0-alpha.7/quick-start/simbot-core/index.html index 9dc64a2b..9c18e834 100644 --- a/docs/3.0.0.0-alpha.7/quick-start/simbot-core/index.html +++ b/docs/3.0.0.0-alpha.7/quick-start/simbot-core/index.html @@ -4,13 +4,13 @@ 使用simbot核心库 | Simple Robot KOOK组件 - +
-
- +
+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/quick-start/spring-boot/index.html b/docs/3.0.0.0-alpha.7/quick-start/spring-boot/index.html index e2bd3e47..d3abe15d 100644 --- a/docs/3.0.0.0-alpha.7/quick-start/spring-boot/index.html +++ b/docs/3.0.0.0-alpha.7/quick-start/spring-boot/index.html @@ -4,15 +4,15 @@ 使用SpringBoot | Simple Robot KOOK组件 - +
版本:3.0.0.0-alpha.7

使用SpringBoot

前言

本编文档介绍在JVM环境下使用:

  • simboot-core-spring-boot-starter (simbot3 的 Spring Boot Starter)
  • simbot-component-kook-core (simbot3 KOOK组件)

来编写一个KOOK机器人。

前提准备

首先你应当准备至少一个可用的 KOOK机器人

项目构建

首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。

然后额外添加两个我们需要的依赖:

  • love.forte.simbot.boot:simboot-core-spring-boot-starter
    (版本参考)
  • love.forte.simbot.component:simbot-component-kook-core
    (版本参考)
保持住

注意,在使用 Spring Boot 的时候你需要一些能够使程序保持运行的组件,例如通过 spring-web 启用一个服务器,否则程序可能会自动终止。 因为simbot的 starter 并不提供维持程序运行的能力。

// simbot core starter  
implementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION") // 版本请参考前文的参考链接
// KOOK组件
implementation("love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8") // 版本请参考前文的参考链接

BOT配置

接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot.bot.json ) 。

配置文件的具体内容则参考章节 BOT配置文件

此路径以 IDEA 的项目结构风格为准,如果是其他IDE,使用对应的资源文件目录。

${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json
可配置

如果想要修改此路径,可在 Spring Boot 的配置文件中进行配置:

# 自定义配置bot资源文件的扫描路径。
# 默认为 classpath:simbot-bots/*.bot*
# 如果要使用本地文件可以使用 `file:` 开头
simbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot*

启动类

像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot

com.example.App.kt
@EnableSimbot
@SpringBootApplication
class App

fun main(vararg args: String) {
runApplication<App>(args = args)
}

监听事件

接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。

此处我们监听 ChannelMessageEvent,也就是 子频道的消息事件

假设:要求bot必须被AT,并且说一句 你好,此时bot会引用用户发送的消息并回复 你也好! ,类似于:

用户: 
@BOT 你好

BOT:
> 用户: @BOT 你好
你也好!
com.example.listener.ExampleListener.kt
import love.forte.simboot.annotation.ContentTrim
import love.forte.simboot.annotation.Filter
import love.forte.simboot.annotation.Listener
import love.forte.simbot.event.ChannelMessageEvent

@Component
class ExampleListener {

@Listener
@Filter(value = "你好", targets = Filter.Targets(atBot = true))
@ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格
suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息
event.reply("你也好!")
}
}


启动

接下来,启动程序并在你的沙箱频道中@它试试看吧。

当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。

更多

前往 simbot3官网 来了解simbot3的各通用能力

前往 API文档 或通过源码翻阅、搜索并了解具体的功能。

前往 社区 提出疑惑。

最终,本手册网站可能会时不时的更新一些实用性的应用文档。

精力有限

编写使用手册是极其消耗精力的事情。

我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署)

其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。

最终,我们才会考虑完善本手册网站。

- +你可以参考文档中 响应式的处理结果 的内容。

com.example.listener.ExampleListener.java
import love.forte.simboot.annotation.ContentTrim
import love.forte.simboot.annotation.Filter
import love.forte.simboot.annotation.Listener
import love.forte.simbot.event.ChannelMessageEvent

@Component
public class ExampleListener {

@Listener
@Filter(value = "你好", targets = @Filter.Targets(atBot = true))
@ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格
public Mono<?> onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息

// 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它
return Mono.fromCompletionStage(event.replyAsync("你也好!"));
}

}

启动

接下来,启动程序并在你的沙箱频道中@它试试看吧。

当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。

更多

前往 simbot3官网 来了解simbot3的各通用能力

前往 API文档 或通过源码翻阅、搜索并了解具体的功能。

前往 社区 提出疑惑。

最终,本手册网站可能会时不时的更新一些实用性的应用文档。

精力有限

编写使用手册是极其消耗精力的事情。

我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署)

其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。

最终,我们才会考虑完善本手册网站。

+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/quick-start/stdlib/index.html b/docs/3.0.0.0-alpha.7/quick-start/stdlib/index.html index b598db3a..179cf3e2 100644 --- a/docs/3.0.0.0-alpha.7/quick-start/stdlib/index.html +++ b/docs/3.0.0.0-alpha.7/quick-start/stdlib/index.html @@ -4,13 +4,13 @@ 使用标准库 | Simple Robot KOOK组件 - +
-
版本:3.0.0.0-alpha.7

使用标准库

TODO

施工中

- +
版本:3.0.0.0-alpha.7

使用标准库

TODO

施工中

+ \ No newline at end of file diff --git a/docs/3.0.0.0-alpha.7/search-index.json b/docs/3.0.0.0-alpha.7/search-index.json index 505fb4e3..544f8538 100644 --- a/docs/3.0.0.0-alpha.7/search-index.json +++ b/docs/3.0.0.0-alpha.7/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":90,"t":"首页","u":"/docs/3.0.0.0-alpha.7/","b":["文档"]},{"i":92,"t":"BOT配置文件","u":"/docs/3.0.0.0-alpha.7/bot-config/","b":["文档"]},{"i":102,"t":"使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/api","b":["文档","快速开始"]},{"i":110,"t":"使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/simbot-core","b":["文档","快速开始"]},{"i":112,"t":"快速开始","u":"/docs/3.0.0.0-alpha.7/quick-start/","b":["文档","快速开始"]},{"i":124,"t":"使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/stdlib","b":["文档","快速开始"]},{"i":126,"t":"使用SpringBoot","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","b":["文档","快速开始"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/90",[0,2.174]],["t/92",[1,0.606,2,1.764]],["t/102",[1,0.606,3,0.606]],["t/110",[1,0.44,3,0.44,4,1.281,5,0.89]],["t/112",[6,1.764,7,1.764]],["t/124",[3,0.51,5,1.031,8,1.484]],["t/126",[1,0.606,3,0.606]]],"invertedIndex":[["",{"_index":1,"t":{"92":{"position":[[0,3]]},"102":{"position":[[2,3]]},"110":{"position":[[2,6]]},"126":{"position":[[2,10]]}}}],["使用",{"_index":3,"t":{"102":{"position":[[0,2]]},"110":{"position":[[0,2]]},"124":{"position":[[0,2]]},"126":{"position":[[0,2]]}}}],["库",{"_index":5,"t":{"110":{"position":[[10,1]]},"124":{"position":[[4,1]]}}}],["开始",{"_index":7,"t":{"112":{"position":[[2,2]]}}}],["快速",{"_index":6,"t":{"112":{"position":[[0,2]]}}}],["标准",{"_index":8,"t":{"124":{"position":[[2,2]]}}}],["核心",{"_index":4,"t":{"110":{"position":[[8,2]]}}}],["配置文件",{"_index":2,"t":{"92":{"position":[[3,4]]}}}],["首页",{"_index":0,"t":{"90":{"position":[[0,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":94,"t":"component","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#component","p":92},{"i":96,"t":"clientId","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#clientid","p":92},{"i":98,"t":"token","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#token","p":92},{"i":100,"t":"config","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#config","p":92},{"i":104,"t":"安装","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#安装","p":102},{"i":106,"t":"使用","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#使用","p":102},{"i":108,"t":"获取用户频道服务器列表","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#获取用户频道服务器列表","p":102},{"i":114,"t":"文档列表","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"#文档列表","p":112},{"i":116,"t":"📄️ 使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":118,"t":"📄️ 使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":120,"t":"📄️ 使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":122,"t":"📄️ 使用SpringBoot","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":127,"t":"前言","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前言","p":126},{"i":129,"t":"前提准备","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前提准备","p":126},{"i":131,"t":"项目构建","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#项目构建","p":126},{"i":133,"t":"BOT配置","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#bot配置","p":126},{"i":135,"t":"启动类","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动类","p":126},{"i":137,"t":"监听事件","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#监听事件","p":126},{"i":139,"t":"启动","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动","p":126},{"i":141,"t":"更多","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#更多","p":126}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/94",[0,1.122]],["t/96",[0,1.122]],["t/98",[0,1.122]],["t/100",[0,1.122]],["t/104",[1,3.273]],["t/106",[2,1.662]],["t/108",[3,1.583,4,1.583,5,1.583,6,1.583,7,1.276]],["t/114",[7,2.083,8,2.583]],["t/116",[0,0.885,2,1.312]],["t/118",[2,1.083,9,2.134,10,1.721]],["t/120",[0,0.623,2,0.923,10,1.466,11,1.817]],["t/122",[0,0.885,2,1.312]],["t/127",[12,3.273]],["t/129",[13,2.583,14,2.583]],["t/131",[15,2.583,16,2.583]],["t/133",[0,0.885,17,2.583]],["t/135",[18,2.083,19,2.583]],["t/137",[20,2.583,21,2.583]],["t/139",[18,2.64]],["t/141",[22,2.583,23,2.583]]],"invertedIndex":[["",{"_index":0,"t":{"94":{"position":[[0,9]]},"96":{"position":[[0,8]]},"98":{"position":[[0,5]]},"100":{"position":[[0,6]]},"116":{"position":[[6,3]]},"120":{"position":[[6,6]]},"122":{"position":[[6,10]]},"133":{"position":[[0,3]]}}}],["事件",{"_index":21,"t":{"137":{"position":[[2,2]]}}}],["使用",{"_index":2,"t":{"106":{"position":[[0,2]]},"116":{"position":[[4,2]]},"118":{"position":[[4,2]]},"120":{"position":[[4,2]]},"122":{"position":[[4,2]]}}}],["准备",{"_index":14,"t":{"129":{"position":[[2,2]]}}}],["列表",{"_index":7,"t":{"108":{"position":[[9,2]]},"114":{"position":[[2,2]]}}}],["前提",{"_index":13,"t":{"129":{"position":[[0,2]]}}}],["前言",{"_index":12,"t":{"127":{"position":[[0,2]]}}}],["启动",{"_index":18,"t":{"135":{"position":[[0,2]]},"139":{"position":[[0,2]]}}}],["多",{"_index":23,"t":{"141":{"position":[[1,1]]}}}],["安装",{"_index":1,"t":{"104":{"position":[[0,2]]}}}],["库",{"_index":10,"t":{"118":{"position":[[8,1]]},"120":{"position":[[14,1]]}}}],["文档",{"_index":8,"t":{"114":{"position":[[0,2]]}}}],["更",{"_index":22,"t":{"141":{"position":[[0,1]]}}}],["服务器",{"_index":6,"t":{"108":{"position":[[6,3]]}}}],["构建",{"_index":16,"t":{"131":{"position":[[2,2]]}}}],["标准",{"_index":9,"t":{"118":{"position":[[6,2]]}}}],["核心",{"_index":11,"t":{"120":{"position":[[12,2]]}}}],["用户",{"_index":4,"t":{"108":{"position":[[2,2]]}}}],["监听",{"_index":20,"t":{"137":{"position":[[0,2]]}}}],["类",{"_index":19,"t":{"135":{"position":[[2,1]]}}}],["获取",{"_index":3,"t":{"108":{"position":[[0,2]]}}}],["配置",{"_index":17,"t":{"133":{"position":[[3,2]]}}}],["项目",{"_index":15,"t":{"131":{"position":[[0,2]]}}}],["频道",{"_index":5,"t":{"108":{"position":[[4,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":91,"t":"欢迎来到 Simple Robot 的KOOK机器人组件文档。 KOOK组件是基于 simbot核心库 API对 KOOK机器人 的实现。 基本功能 对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。","s":"首页","u":"/docs/3.0.0.0-alpha.7/","h":"","p":90},{"i":93,"t":"待施工 待施工 xxx.bot.json { \"component\": \"simbot.kook\", \"clientId\": \"Your client ID\", \"token\": \"Your ws token\", \"config\": { \"isCompress\": true, \"syncPeriods\": { \"guildSyncPeriod\": 60000, \"memberSyncPeriods\": 60000 } } }","s":"BOT配置文件","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"","p":92},{"i":95,"t":"固定值 simbot.kook,必填,代表此配置文件为KOOK组件的。","s":"component","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#component","p":92},{"i":97,"t":"BOT的 Client ID。","s":"clientId","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#clientid","p":92},{"i":99,"t":"BOT使用 websocket 模式进行连接的 Token . 在哪儿? 可以在 KOOK开发者平台-应用 中查看。 后日谈 日后此类票据信息会整合到 ticket 字段内。 { \"component\": \"simbot.kook\", \"ticket\": { \"clientId\": \"Your client ID\", \"token\": \"Your ws token\" } }","s":"token","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#token","p":92},{"i":101,"t":"其他配置,可选。 config.isCompress​ 是否压缩数据。默认为 true。 参考 Gateway API 中的 compress 参数。 config.syncPeriods​ 缓存对象信息的同步周期配置。 { \"config\": { \"syncPeriods\": { \"guildSyncPeriod\": 180000, \"batchDelay\": 0 } } } guildSyncPeriod 对频道服务器进行同步的周期,单位毫秒,大于0时生效。服务器同步的同时会去同步此服务器下的所有频道列表与成员列表。 默认为 180000,即 180000毫秒 -> 180秒 -> 3分钟。 进行配置的时候需要注意调用频率上限等相关问题。 batchDelay 当 guildSyncPeriod 生效时,在数据同步的过程中每一次查询(即批次)后挂起等待的时间,单位毫秒。 默认为 0,即不等待。 通过配置此属性可一定程度上降低触发调用频率限制的风险。 默认值的由来? 一拍脑瓜儿随便写的。","s":"config","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#config","p":92},{"i":103,"t":"API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。 全变了 API模块在 #82 的过程中会大改, 包括变更API接口的结果实现、事件类型的实现等,以及变更所有API的命名为 GetXxxListApi 风格等。","s":"使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"","p":102},{"i":105,"t":"Gradle Kotlin DSL Gradle Groovy Maven // 不要忘记使用 Gradle 的 kotlin 插件来允许自动选择对应平台,比如JVM或JS等。 implementation(\"love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8\") // 版本参考下文所述的 Releases // 不要忘记使用 Gradle 的 kotlin 插件来允许自动选择对应平台,比如JVM或JS等。 implementation 'love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8' // 版本参考下文所述的 Releases love.forte.simbot.component simbot-component-kook-api 3.2.0.0-alpha.8 版本参考 版本可前往 Releases 查看并选择。","s":"安装","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#安装","p":102},{"i":107,"t":"太多了 我们不会在此处一一列举所有的API做演示,这不太现实。 所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。 API包装类的命名也存在一定的规律,比如一个 获取某列表 的API通常会被命名为 XxxListRequest。 下文会选择一小部分API来做示例。","s":"使用","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#使用","p":102},{"i":109,"t":"以 获取当前用户(BOT)加入的服务器列表 为例。 Kotlin Java // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(Java) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GuildListRequest.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData = api.requestData(client, authorization) guildListData.items.forEach { ... } // 也可以直接 guildListData.forEach { ... } // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-java 引擎为例。 var client = HttpClientKt.HttpClient(Java.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建要请求的API,大部分API都有一些可选或必须的参数。 var api = GuildListRequest.create(); // requestDataBlocking 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) var guildListData = api.requestDataBlocking(client, authorization); for (var guild : guildListData) { System.out.println(guild); }","s":"获取用户频道服务器列表","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#获取用户频道服务器列表","p":102},{"i":111,"t":"其他参考 你可以参考simbot3官网中的 《使用核心库》 TODO 施工中 你可以先参考 使用SpringBoot,它相当于在 Spring Boot 环境下使用simbot核心库。","s":"使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/simbot-core","h":"","p":110},{"i":113,"t":"此目录中提供一些使用KOOK组件的简单示例。","s":"快速开始","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":115,"t":"📄️ 使用API API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。 📄️ 使用标准库 施工中 📄️ 使用simbot核心库 你可以参考simbot3官网中的 《使用核心库》 📄️ 使用SpringBoot 前言","s":"文档列表","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"#文档列表","p":112},{"i":117,"t":"API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。","s":"📄️ 使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":119,"t":"施工中","s":"📄️ 使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":121,"t":"你可以参考simbot3官网中的 《使用核心库》","s":"📄️ 使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":123,"t":"前言","s":"📄️ 使用SpringBoot","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":112},{"i":125,"t":"TODO 施工中","s":"使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/stdlib","h":"","p":124},{"i":128,"t":"本编文档介绍在JVM环境下使用: simboot-core-spring-boot-starter (simbot3 的 Spring Boot Starter) simbot-component-kook-core (simbot3 KOOK组件) 来编写一个KOOK机器人。","s":"前言","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前言","p":126},{"i":130,"t":"首先你应当准备至少一个可用的 KOOK机器人 。","s":"前提准备","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前提准备","p":126},{"i":132,"t":"首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。 然后额外添加两个我们需要的依赖: love.forte.simbot.boot:simboot-core-spring-boot-starter (版本参考) love.forte.simbot.component:simbot-component-kook-core (版本参考) 保持住 注意,在使用 Spring Boot 的时候你需要一些能够使程序保持运行的组件,例如通过 spring-web 启用一个服务器,否则程序可能会自动终止。 因为simbot的 starter 并不提供维持程序运行的能力。 Gradle Kotlin DSL Gradle Groovy Maven // simbot core starter implementation(\"love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION\") // 版本请参考前文的参考链接 // KOOK组件 implementation(\"love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8\") // 版本请参考前文的参考链接 // simbot core starter implementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // 版本请参考前文的参考链接 // KOOK组件 implementation 'love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8' // 版本请参考前文的参考链接 love.forte.simbot.boot simboot-core-spring-boot-starter ${SIMBOT_VERSION} love.forte.simbot.component simbot-component-kook-core 3.2.0.0-alpha.8 ","s":"项目构建","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#项目构建","p":126},{"i":134,"t":"接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot 或 .bot.json ) 。 配置文件的具体内容则参考章节 BOT配置文件 。 此路径以 IDEA 的项目结构风格为准,如果是其他IDE,使用对应的资源文件目录。 ${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json 可配置 如果想要修改此路径,可在 Spring Boot 的配置文件中进行配置: properties YAML # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 simbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot* simbot: # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 bot-configuration-resources: - 'classpath:simbot-bots/*.bot*'","s":"BOT配置","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#bot配置","p":126},{"i":136,"t":"像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot : Kotlin Java com.example.App.kt @EnableSimbot @SpringBootApplication class App fun main(vararg args: String) { runApplication(args = args) } 早有预防 如果你在Java中遇到了无法引用 @EnableSimbot 等情况,或许可以参考 这篇FAQ。 com.example.App.java @EnableSimbot @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }","s":"启动类","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动类","p":126},{"i":138,"t":"接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。 此处我们监听 ChannelMessageEvent,也就是 子频道的消息事件。 假设:要求bot必须被AT,并且说一句 你好,此时bot会引用用户发送的消息并回复 你也好! ,类似于: 用户: @BOT 你好 BOT: > 用户: @BOT 你好 你也好! Kotlin Java Blocking Java Async Java Reactive com.example.listener.ExampleListener.kt import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component class ExampleListener { @Listener @Filter(value = \"你好\", targets = Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 event.reply(\"你也好!\") } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public void onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // Java中的阻塞式API event.replyBlocking(\"你也好!\"); } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 CompletableFuture 作为返回值,simbot会以非阻塞的形式处理它 return event.replyAsync(\"你也好!\"); } } 有要求 如果返回值是需要第三方库的响应式类型,那么你的项目环境依赖中必须存在 Kotlin courotines 对其的支持库才可使用。 你可以参考文档中 响应式的处理结果 的内容。 com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public Mono onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它 return Mono.fromCompletionStage(event.replyAsync(\"你也好!\")); } }","s":"监听事件","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#监听事件","p":126},{"i":140,"t":"接下来,启动程序并在你的沙箱频道中@它试试看吧。 当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。","s":"启动","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动","p":126},{"i":142,"t":"前往 simbot3官网 来了解simbot3的各通用能力。 前往 API文档 或通过源码翻阅、搜索并了解具体的功能。 前往 社区 提出疑惑。 最终,本手册网站可能会时不时的更新一些实用性的应用文档。 精力有限 编写使用手册是极其消耗精力的事情。 我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署) 其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。 最终,我们才会考虑完善本手册网站。","s":"更多","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#更多","p":126}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/91",[0,3.721,1,3.721,2,0.198,3,3.319,4,2.585,5,2.049,6,3.721,7,2.307,8,1.488,9,2.631,10,3.064,11,4.695,12,3.721,13,3.721,14,3.064,15,3.064,16,2.631,17,2.049,18,2.049,19,0.558]],["t/93",[2,0.208,20,4.812,21,2.649]],["t/95",[2,0.188,4,2.491,22,4.524,23,4.524,24,3.725,25,3.725]],["t/97",[2,0.192]],["t/99",[2,0.204,19,0.526,26,0.841,27,3.505,28,2.478,29,3.505,30,3.505,31,0.841,32,3.505,33,2.886,34,2.478,35,2.886,36,3.505,37,3.505,38,3.505,39,3.505,40,3.505,41,2.478,42,1.402,43,3.505,44,3.505,45,3.505,46,3.505]],["t/101",[2,0.199,9,1.658,19,0.514,28,1.658,41,1.658,42,0.938,47,1.658,48,3.667,49,1.931,50,2.346,51,2.346,52,3.427,53,3.334,54,0.767,55,1.658,56,2.346,57,2.346,58,4.738,59,3.427,60,2.423,61,2.346,62,3.427,63,4.05,64,2.346,65,2.822,66,3.427,67,2.423,68,1.931,69,1.658,70,2.423,71,2.346,72,2.346,73,2.346,74,1.658,75,1.156,76,1.931,77,3.427,78,3.427,79,2.346,80,1.156,81,1.931,82,1.931,83,1.931,84,2.346,85,2.346,86,2.346,87,2.346,88,3.427,89,2.346,90,1.156,91,2.346,92,1.931,93,2.346,94,2.346,95,2.346,96,2.346,97,2.346,98,2.346,99,2.346,100,2.346,101,2.346,102,2.346]],["t/103",[2,0.194,8,1.402,10,3.72,19,0.526,26,0.841,31,0.841,42,1.402,69,2.478,80,2.227,83,2.886,103,3.194,104,2.478,105,2.478,106,2.173,107,2.478,108,3.505,109,3.505,110,2.886,111,3.505,112,3.505,113,4.519,114,3.505,115,2.886,116,2.886,117,2.886,118,3.505,119,2.886,120,2.886]],["t/105",[2,0.208,8,0.882,19,0.331,26,1.037,33,3.217,35,1.816,54,1.413,80,1.614,121,2.697,122,3.276,123,3.276,124,3.276,125,2.316,126,3.057,127,2.697,128,2.697,129,3.266,130,3.217,131,3.908,132,2.206,133,1.368]],["t/107",[2,0.198,5,1.729,16,2.22,31,0.753,42,1.681,69,2.972,70,2.22,75,1.547,90,1.547,92,2.585,119,3.461,126,2.22,128,2.585,130,2.585,134,4.204,135,3.14,136,1.729,137,3.14,138,2.22,139,3.14,140,4.204,141,3.14,142,3.14,143,3.14,144,2.585,145,3.14,146,2.585,147,3.14,148,3.14,149,3.14,150,2.585,151,2.585,152,3.14,153,1.256,154,2.585,155,3.14,156,3.14,157,2.585]],["t/109",[2,0.208,16,1.802,19,0.239,26,0.611,31,0.382,41,1.802,42,1.019,49,2.098,54,1.189,55,1.802,67,1.127,70,1.127,75,1.793,115,2.098,126,1.802,138,1.127,153,0.637,154,2.098,158,1.594,159,1.312,160,1.594,161,2.549,162,2.098,163,3.639,164,2.549,165,2.549,166,2.549,167,3.185,168,2.549,169,2.549,170,2.549,171,3.185,172,2.098,173,2.549,174,1.58,175,2.098,176,2.549,177,2.098,178,2.098,179,2.549,180,2.549,181,2.549,182,2.549,183,2.098,184,2.549,185,2.549,186,1.594]],["t/111",[2,0.193,7,2.968,8,1.915,17,2.114,18,2.114,19,0.718,21,2.114,26,1.251,31,1.148,47,2.714,54,1.705,187,3.84,188,3.84,189,2.714]],["t/113",[2,0.151,4,2.467,19,0.672,26,1.075,157,3.69,174,2.779,190,4.482,191,3.69,192,4.482]],["t/115",[2,0.193,7,2.869,8,2.142,14,2.994,17,2.002,18,2.002,19,0.694,21,2.002,26,1.356,31,1.11,54,1.189,103,2.571,104,2.571,105,2.571,106,2.255,107,2.571,193,2.994]],["t/117",[2,0.186,8,1.76,26,1.055,31,1.055,103,3.111,104,3.111,105,3.111,106,2.728,107,3.111]],["t/119",[19,0.719,21,2.639]],["t/121",[2,0.151,7,2.779,8,1.792,17,2.467,18,2.467,19,0.672,26,1.075,31,1.075,54,1.465]],["t/123",[193,3.986]],["t/125",[2,0.16,19,0.712,21,2.613]],["t/128",[2,0.206,3,2.714,4,2.114,5,2.114,15,3.161,26,0.921,153,1.535,189,2.714,194,3.84,195,3.84,196,2.714]],["t/130",[2,0.152,3,3.198,153,1.809,197,3.198,198,4.524,199,3.725,200,4.524,201,4.524]],["t/132",[2,0.209,4,1.883,26,0.344,31,0.344,42,0.573,54,1.668,67,1.013,74,1.013,75,1.152,76,1.18,80,0.706,90,0.706,125,1.013,129,3.144,133,0.888,136,0.789,153,0.935,174,0.888,177,1.18,191,1.18,197,1.013,199,1.18,202,1.013,203,1.18,204,1.433,205,1.433,206,1.433,207,1.433,208,1.433,209,1.18,210,2.339,211,1.433,212,1.433,213,1.925,214,1.433,215,1.433,216,1.18,217,1.433,218,1.18,219,1.433,220,1.433,221,1.433,222,1.433,223,1.18,224,4.043,225,4.043,226,4.043,227,4.043]],["t/134",[2,0.206,19,0.483,25,3.521,26,1.097,28,1.525,31,0.773,47,1.525,48,3.767,53,2.652,54,0.705,120,1.776,127,1.776,144,3.521,153,0.863,162,1.776,172,2.652,202,2.277,228,1.525,229,4.276,230,3.221,231,2.157,232,2.157,233,2.157,234,2.157,235,2.157,236,2.157,237,2.157,238,2.157,239,2.157,240,2.157,241,2.651,242,2.157,243,2.157,244,3.221,245,4.276,246,3.221,247,3.221,248,3.221]],["t/136",[2,0.208,19,0.429,31,0.686,34,2.022,54,0.935,75,1.409,80,1.409,90,1.409,150,2.355,153,1.578,183,2.355,216,2.355,241,1.773,249,2.861,250,2.861,251,2.355,252,2.861,253,2.861,254,2.861,255,2.355,256,2.861,257,2.355,258,2.861,259,2.861]],["t/138",[2,0.208,5,0.473,8,0.605,9,0.607,19,0.304,24,2.013,26,0.206,31,0.206,42,0.811,54,0.281,55,1.728,60,0.607,65,2.013,74,1.728,75,0.423,80,0.423,90,1.205,106,0.938,110,2.013,116,2.532,117,3.191,136,0.473,138,0.607,151,2.295,153,0.605,159,1.67,175,1.246,178,2.532,189,0.607,196,0.607,202,0.607,209,0.707,228,0.607,241,0.532,257,0.707,260,1.513,261,0.859,262,0.859,263,0.859,264,0.859,265,4.019,266,0.859,267,0.859,268,4.363,269,0.859,270,1.513,271,0.859,272,0.859,273,0.859,274,3.321,275,0.859,276,0.859,277,0.707,278,3.076,279,0.859,280,3.532,281,2.445,282,2.445,283,2.445,284,2.445,285,2.445,286,2.445,287,3.532,288,3.532,289,2.445,290,2.445,291,2.445,292,2.445,293,2.445,294,2.029,295,2.445,296,2.029,297,1.513,298,1.513,299,1.513,300,0.859,301,2.029,302,0.859,303,0.859,304,0.707,305,0.859,306,0.859]],["t/140",[2,0.126,19,0.563,31,0.899,60,2.651,82,4.25,121,3.088,133,2.325,136,2.065,213,3.088,228,2.651,241,2.325,251,3.088,255,3.088,307,3.75,308,3.75,309,3.75,310,3.75,311,3.75,312,3.75,313,3.75,314,4.718,315,3.75,316,3.75,317,3.75,318,3.088,319,3.088,320,3.75]],["t/142",[2,0.166,5,2.72,17,1.438,18,1.438,19,0.392,34,1.847,42,1.976,68,2.151,81,2.151,90,1.287,125,1.847,129,1.847,133,2.667,136,2.368,146,3.542,174,1.62,196,1.847,197,1.847,203,2.151,218,2.151,223,2.151,277,2.151,304,2.151,318,3.049,319,2.151,321,3.704,322,2.613,323,2.613,324,2.613,325,2.613,326,2.613,327,3.704,328,3.704,329,3.704,330,3.704,331,2.613,332,2.613,333,2.613,334,2.613,335,2.613,336,2.613,337,2.613,338,2.613,339,2.613,340,3.704,341,2.613,342,2.613,343,2.613,344,2.613,345,2.613,346,2.613,347,2.613,348,2.613,349,2.613,350,2.613,351,2.613,352,2.613,353,2.613,354,2.613,355,2.613,356,2.613]]],"invertedIndex":[["",{"_index":2,"t":{"91":{"position":[[5,6],[12,5],[19,4],[32,4],[42,6],[52,3],[57,4],[77,6],[101,6]]},"93":{"position":[[8,3],[12,3],[16,4],[24,9],[37,6],[44,4],[52,8],[64,4],[69,6],[76,2],[82,5],[91,4],[96,2],[99,5],[108,6],[120,10],[133,4],[140,11],[157,15],[175,5],[183,17],[203,5]]},"95":{"position":[[4,6],[11,4],[27,4]]},"97":{"position":[[0,3],[5,6],[12,2]]},"99":{"position":[[0,3],[6,9],[24,5],[41,4],[76,6],[91,9],[104,6],[111,4],[119,6],[131,8],[143,4],[148,6],[155,2],[161,5],[170,4],[175,2],[178,5]]},"101":{"position":[[9,6],[16,10],[39,4],[48,7],[56,3],[63,8],[76,6],[83,11],[114,6],[126,11],[143,15],[161,6],[170,10],[183,1],[191,15],[228,1],[268,6],[277,6],[289,3],[297,1],[326,10],[339,15],[397,1]]},"103":{"position":[[0,3],[21,4],[26,3],[40,3],[48,2],[64,3],[90,3],[98,13]]},"105":{"position":[[0,6],[7,6],[14,3],[18,6],[25,6],[32,5],[48,6],[57,6],[80,3],[84,2],[89,14],[105,4],[110,5],[116,6],[123,9],[133,6],[140,9],[150,4],[155,3],[159,1],[161,1],[163,1],[165,1],[167,5],[173,1],[190,8],[209,6],[218,6],[241,3],[245,2],[250,14],[266,4],[271,5],[277,6],[284,9],[294,6],[301,9],[311,4],[316,3],[320,1],[322,1],[324,1],[326,1],[328,5],[334,1],[350,8],[360,10],[373,7],[381,4],[386,5],[392,6],[399,9],[410,7],[425,5],[436,3],[448,3],[460,10],[471,6],[478,9],[488,4],[493,3],[498,10],[525,8],[539,7],[547,1],[549,1],[551,1],[553,1],[555,5],[561,1],[564,7],[575,10],[598,8]]},"107":{"position":[[18,3],[35,3],[44,4],[49,5],[55,6],[62,4],[67,3],[79,3],[101,3],[106,3],[136,3],[147,14],[172,3]]},"109":{"position":[[9,3],[26,6],[33,4],[47,4],[52,10],[92,5],[100,4],[105,2],[108,4],[113,4],[118,6],[125,7],[133,4],[138,3],[142,6],[151,10],[162,4],[173,6],[197,3],[207,3],[211,5],[220,5],[228,9],[238,7],[246,2],[249,3],[253,9],[263,3],[267,13],[284,3],[288,10],[309,3],[316,3],[333,3],[337,3],[343,16],[360,6],[372,7],[380,4],[388,6],[401,4],[427,3],[431,13],[447,3],[451,11],[463,6],[471,13],[486,13],[500,5],[506,7],[531,13],[545,7],[565,4],[578,4],[585,10],[606,4],[611,10],[651,5],[659,4],[664,2],[667,4],[672,4],[677,6],[684,7],[692,4],[704,4],[709,4],[720,3],[724,6],[733,12],[746,10],[757,4],[762,8],[772,6],[787,6],[797,6],[804,4],[809,8],[835,3],[845,3],[849,5],[858,5],[866,9],[876,7],[884,2],[887,3],[891,9],[901,3],[905,13],[922,3],[926,10],[948,3],[955,3],[972,3],[976,3],[982,16],[999,6],[1012,19],[1035,6],[1048,4],[1074,3],[1078,13],[1094,3],[1098,19],[1118,6],[1126,13],[1142,3],[1147,3],[1151,5],[1159,13],[1176,6],[1183,3],[1187,7],[1195,5]]},"111":{"position":[[10,7],[30,4],[48,10],[65,6],[72,4],[82,6]]},"113":{"position":[[10,4]]},"115":{"position":[[6,3],[10,3],[31,4],[36,3],[66,6],[81,7],[107,10]]},"117":{"position":[[0,3],[21,4],[26,3]]},"121":{"position":[[5,7]]},"125":{"position":[[0,4]]},"128":{"position":[[7,3],[17,7],[25,4],[30,6],[37,4],[42,7],[51,7],[61,6],[68,4],[73,7],[82,6],[89,9],[99,4],[104,4],[110,7],[118,4],[131,4]]},"130":{"position":[[15,4]]},"132":{"position":[[6,10],[26,5],[32,6],[39,2],[45,3],[70,4],[75,5],[81,6],[88,4],[93,7],[101,4],[106,6],[113,4],[118,7],[133,4],[138,5],[144,6],[151,9],[161,6],[168,9],[178,4],[183,4],[206,6],[213,4],[244,6],[251,3],[278,6],[286,7],[309,6],[316,6],[323,3],[327,6],[334,6],[341,5],[350,6],[357,4],[362,7],[370,14],[386,4],[391,5],[397,6],[404,4],[409,7],[417,4],[422,6],[429,4],[434,7],[443,14],[443,6],[450,7],[479,4],[486,14],[502,4],[507,5],[513,6],[520,9],[530,6],[537,9],[547,4],[552,4],[557,1],[559,1],[561,1],[563,1],[565,5],[571,1],[594,6],[601,4],[606,7],[614,14],[630,4],[635,5],[641,6],[648,4],[653,7],[661,4],[666,6],[673,4],[678,7],[687,14],[687,6],[694,7],[722,4],[729,14],[745,4],[750,5],[756,6],[763,9],[773,6],[780,9],[790,4],[795,4],[800,1],[802,1],[804,1],[806,1],[808,5],[814,1],[838,6],[845,4],[850,7],[863,10],[876,7],[884,4],[889,5],[895,6],[902,4],[908,7],[918,10],[929,7],[937,4],[942,6],[949,4],[954,7],[963,10],[998,7],[1008,14],[1008,6],[1015,7],[1025,7],[1036,10],[1053,4],[1065,10],[1078,7],[1086,4],[1091,5],[1097,6],[1104,9],[1115,7],[1125,10],[1136,6],[1143,9],[1153,4],[1158,4],[1164,10],[1199,7],[1207,1],[1209,1],[1211,1],[1213,1],[1215,5],[1221,1],[1224,7],[1235,10]]},"134":{"position":[[16,6],[23,4],[40,3],[49,3],[53,3],[57,4],[77,3],[84,3],[88,4],[112,3],[127,4],[147,3],[166,11],[166,7],[174,3],[179,4],[184,9],[194,6],[201,4],[206,3],[210,3],[214,4],[236,6],[243,4],[260,10],[271,4],[283,3],[303,9],[313,6],[320,4],[327,3],[349,4],[359,6],[366,3],[370,13],[384,9],[394,1],[397,9],[407,6],[414,4],[421,3],[426,6],[441,3],[461,9],[471,6],[478,4],[485,3],[507,4],[517,3],[521,13],[535,9],[549,9],[559,6],[566,4],[573,3]]},"136":{"position":[[5,6],[12,4],[38,12],[55,6],[64,6],[71,4],[76,3],[80,7],[88,3],[92,2],[96,12],[110,21],[132,5],[138,3],[142,3],[146,4],[151,6],[158,4],[164,6],[174,14],[189,3],[194,4],[201,4],[218,4],[232,12],[258,3],[263,3],[267,7],[275,3],[279,4],[285,12],[299,21],[321,6],[328,5],[334,3],[340,6],[347,6],[354,4],[359,4],[364,6],[373,4],[381,17],[399,3],[403,3],[407,5],[414,4]]},"138":{"position":[[40,19],[79,3],[85,2],[99,3],[132,3],[139,3],[151,3],[163,6],[170,4],[175,8],[184,4],[189,5],[195,4],[200,8],[209,3],[213,7],[221,8],[230,15],[246,2],[249,6],[256,4],[261,5],[267,7],[275,10],[286,11],[298,6],[305,4],[310,5],[316,7],[324,10],[335,6],[342,6],[349,4],[354,5],[360,7],[368,10],[379,8],[388,6],[395,4],[400,5],[406,6],[413,5],[419,19],[440,9],[450,5],[456,15],[475,8],[485,6],[492,5],[506,7],[516,6],[523,7],[531,5],[539,4],[547,11],[566,2],[572,2],[620,7],[628,3],[632,16],[649,5],[656,19],[709,5],[715,5],[733,3],[737,7],[745,8],[754,15],[770,4],[775,6],[782,4],[787,5],[793,7],[801,10],[812,11],[824,6],[831,4],[836,5],[842,7],[850,10],[861,6],[868,6],[875,4],[880,5],[886,7],[894,10],[905,8],[914,6],[921,4],[926,5],[932,6],[939,5],[945,19],[966,9],[976,6],[983,5],[989,15],[1008,8],[1018,6],[1025,5],[1039,7],[1050,6],[1057,7],[1065,5],[1073,4],[1081,11],[1100,2],[1106,2],[1154,6],[1161,4],[1166,16],[1183,19],[1203,5],[1245,4],[1254,3],[1258,5],[1264,13],[1291,3],[1295,7],[1303,8],[1312,15],[1328,4],[1333,6],[1340,4],[1345,5],[1351,7],[1359,10],[1370,11],[1382,6],[1389,4],[1394,5],[1400,7],[1408,10],[1419,6],[1426,6],[1433,4],[1438,5],[1444,7],[1452,10],[1463,8],[1472,6],[1479,4],[1484,5],[1490,6],[1497,5],[1503,19],[1524,9],[1534,6],[1541,5],[1547,15],[1566,8],[1576,6],[1583,5],[1597,7],[1608,6],[1615,7],[1623,5],[1631,4],[1639,11],[1658,2],[1664,2],[1712,6],[1719,17],[1740,16],[1757,19],[1777,5],[1821,17],[1845,6],[1863,6],[1870,5],[1876,10],[1939,6],[1946,10],[1992,3],[1996,7],[2004,8],[2013,15],[2029,4],[2034,6],[2041,4],[2046,5],[2052,7],[2060,10],[2071,11],[2083,6],[2090,4],[2095,5],[2101,7],[2109,10],[2120,6],[2127,6],[2134,4],[2139,5],[2145,7],[2153,10],[2164,8],[2173,6],[2180,4],[2185,5],[2191,6],[2198,5],[2204,19],[2225,9],[2235,6],[2242,5],[2248,15],[2267,8],[2277,6],[2284,5],[2298,7],[2309,6],[2316,7],[2324,5],[2332,4],[2340,11],[2359,2],[2365,2],[2413,6],[2420,4],[2428,16],[2445,19],[2465,5],[2509,4],[2526,6],[2544,6],[2551,4],[2556,19],[2576,5],[2582,10]]},"140":{"position":[[65,6]]},"142":{"position":[[3,7],[16,7],[34,3],[149,3],[172,3]]}}}],["一一列举",{"_index":139,"t":{"107":{"position":[[11,4]]}}}],["一个",{"_index":153,"t":{"107":{"position":[[126,2]]},"109":{"position":[[575,2]]},"128":{"position":[[129,2]]},"130":{"position":[[9,2]]},"132":{"position":[[4,2],[257,2]]},"134":{"position":[[34,2]]},"136":{"position":[[2,2],[25,2]]},"138":{"position":[[18,2],[27,2]]}}}],["一些",{"_index":174,"t":{"109":{"position":[[321,2],[960,2]]},"113":{"position":[[6,2]]},"132":{"position":[[224,2]]},"142":{"position":[[89,2]]}}}],["一句",{"_index":273,"t":{"138":{"position":[[91,2]]}}}],["一定",{"_index":92,"t":{"101":{"position":[[413,2]]},"107":{"position":[[118,2]]}}}],["一小部分",{"_index":156,"t":{"107":{"position":[[168,4]]}}}],["一样",{"_index":250,"t":{"136":{"position":[[19,2]]}}}],["一次",{"_index":84,"t":{"101":{"position":[[369,2]]}}}],["上限",{"_index":79,"t":{"101":{"position":[[317,2]]}}}],["下文",{"_index":130,"t":{"105":{"position":[[184,2],[344,2],[519,2]]},"107":{"position":[[163,2]]}}}],["不会",{"_index":137,"t":{"107":{"position":[[6,2]]}}}],["不要",{"_index":121,"t":{"105":{"position":[[41,2],[202,2]]},"140":{"position":[[40,2]]}}}],["两个",{"_index":208,"t":{"132":{"position":[[59,2]]}}}],["中",{"_index":19,"t":{"91":{"position":[[110,1]]},"99":{"position":[[54,1]]},"101":{"position":[[60,1],[367,1]]},"103":{"position":[[54,1]]},"105":{"position":[[430,1]]},"109":{"position":[[569,1]]},"111":{"position":[[19,1],[37,1]]},"113":{"position":[[3,1]]},"115":{"position":[[58,1],[90,1]]},"119":{"position":[[2,1]]},"121":{"position":[[14,1]]},"125":{"position":[[7,1]]},"134":{"position":[[31,1],[253,1]]},"136":{"position":[[222,1]]},"138":{"position":[[1249,1],[1933,1],[1976,1]]},"140":{"position":[[16,1]]},"142":{"position":[[211,1]]}}}],["为准",{"_index":240,"t":{"134":{"position":[[139,2]]}}}],["也好",{"_index":278,"t":{"138":{"position":[[117,2],[159,2],[723,2],[1280,2],[1889,2],[2595,2]]}}}],["了解",{"_index":321,"t":{"142":{"position":[[14,2],[51,2]]}}}],["事件",{"_index":116,"t":{"103":{"position":[[75,2]]},"138":{"position":[[29,2],[70,2],[687,2],[1220,2],[1794,2],[2482,2]]}}}],["事情",{"_index":339,"t":{"142":{"position":[[120,2]]}}}],["介绍",{"_index":15,"t":{"91":{"position":[[96,2]]},"128":{"position":[[4,2]]}}}],["代码",{"_index":262,"t":{"138":{"position":[[7,2]]}}}],["代表",{"_index":24,"t":{"95":{"position":[[19,2]]},"138":{"position":[[698,2],[1231,2],[1805,2],[2493,2]]}}}],["以及",{"_index":118,"t":{"103":{"position":[[84,2]]}}}],["会",{"_index":42,"t":{"99":{"position":[[71,1]]},"101":{"position":[[241,1]]},"103":{"position":[[55,1]]},"107":{"position":[[141,1],[165,1]]},"109":{"position":[[385,1],[1032,1]]},"132":{"position":[[269,1]]},"138":{"position":[[102,1],[1851,1],[2532,1]]},"142":{"position":[[82,1],[126,1],[177,1],[196,1],[225,1]]}}}],["住",{"_index":211,"t":{"132":{"position":[[197,1]]}}}],["作为",{"_index":106,"t":{"103":{"position":[[18,2]]},"115":{"position":[[28,2]]},"117":{"position":[[18,2]]},"138":{"position":[[1839,2],[2520,2]]}}}],["你好",{"_index":274,"t":{"138":{"position":[[94,2],[136,2],[155,2],[501,2],[1034,2],[1592,2],[2293,2]]}}}],["使用",{"_index":26,"t":{"99":{"position":[[3,2]]},"103":{"position":[[15,2]]},"105":{"position":[[45,2],[206,2],[431,2],[446,2]]},"109":{"position":[[79,2],[638,2]]},"111":{"position":[[23,2],[46,2],[80,2]]},"113":{"position":[[8,2]]},"115":{"position":[[4,2],[25,2],[50,2],[64,2],[94,2],[105,2]]},"117":{"position":[[15,2]]},"121":{"position":[[18,2]]},"128":{"position":[[13,2]]},"132":{"position":[[203,2]]},"134":{"position":[[151,2],[337,2],[345,2],[495,2],[503,2]]},"138":{"position":[[1965,2]]}}}],["使用手册",{"_index":335,"t":{"142":{"position":[[108,4]]}}}],["例",{"_index":161,"t":{"109":{"position":[[23,1],[717,1]]}}}],["例如",{"_index":215,"t":{"132":{"position":[[239,2]]}}}],["依赖",{"_index":209,"t":{"132":{"position":[[66,2]]},"138":{"position":[[1931,2]]}}}],["保持",{"_index":210,"t":{"132":{"position":[[195,2],[231,2]]}}}],["保证",{"_index":340,"t":{"142":{"position":[[129,2],[147,2]]}}}],["信息",{"_index":41,"t":{"99":{"position":[[69,2]]},"101":{"position":[[100,2]]},"109":{"position":[[190,2],[828,2]]}}}],["修改",{"_index":243,"t":{"134":{"position":[[227,2]]}}}],["借助",{"_index":204,"t":{"132":{"position":[[43,2]]}}}],["假设",{"_index":269,"t":{"138":{"position":[[74,2]]}}}],["做",{"_index":140,"t":{"107":{"position":[[21,1],[176,1]]}}}],["像",{"_index":249,"t":{"136":{"position":[[0,1]]}}}],["允许",{"_index":124,"t":{"105":{"position":[[67,2],[228,2]]}}}],["先",{"_index":187,"t":{"111":{"position":[[42,1]]}}}],["全",{"_index":108,"t":{"103":{"position":[[36,1]]}}}],["全面",{"_index":355,"t":{"142":{"position":[[204,2]]}}}],["全面性",{"_index":342,"t":{"142":{"position":[[139,3]]}}}],["其他",{"_index":47,"t":{"101":{"position":[[0,2]]},"111":{"position":[[0,2]]},"134":{"position":[[145,2]]}}}],["其次",{"_index":352,"t":{"142":{"position":[[191,2]]}}}],["具体",{"_index":325,"t":{"142":{"position":[[53,2]]}}}],["具体内容",{"_index":237,"t":{"134":{"position":[[102,4]]}}}],["内",{"_index":46,"t":{"99":{"position":[[85,1]]}}}],["内容",{"_index":306,"t":{"138":{"position":[[1988,2]]}}}],["写",{"_index":102,"t":{"101":{"position":[[448,1]]}}}],["准备",{"_index":199,"t":{"130":{"position":[[5,2]]},"132":{"position":[[2,2]]}}}],["函数",{"_index":266,"t":{"138":{"position":[[22,2]]}}}],["分钟",{"_index":73,"t":{"101":{"position":[[298,2]]}}}],["列表",{"_index":70,"t":{"101":{"position":[[255,2],[260,2]]},"107":{"position":[[132,2]]},"109":{"position":[[19,2]]}}}],["创建",{"_index":232,"t":{"134":{"position":[[32,2]]}}}],["前",{"_index":225,"t":{"132":{"position":[[468,1],[583,1],[711,1],[825,1],[985,1],[1186,1]]}}}],["前后",{"_index":287,"t":{"138":{"position":[[597,2],[615,2],[1131,2],[1149,2],[1689,2],[1707,2],[2390,2],[2408,2]]}}}],["前往",{"_index":133,"t":{"105":{"position":[[595,2]]},"132":{"position":[[23,2]]},"140":{"position":[[62,2]]},"142":{"position":[[0,2],[31,2],[60,2]]}}}],["前言",{"_index":193,"t":{"115":{"position":[[118,2]]},"123":{"position":[[0,2]]}}}],["剩余",{"_index":284,"t":{"138":{"position":[[585,2],[1119,2],[1677,2],[2378,2]]}}}],["功能",{"_index":326,"t":{"142":{"position":[[56,2]]}}}],["加入",{"_index":160,"t":{"109":{"position":[[13,2]]}}}],["包",{"_index":143,"t":{"107":{"position":[[40,1]]}}}],["包括",{"_index":112,"t":{"103":{"position":[[60,2]]}}}],["包装",{"_index":149,"t":{"107":{"position":[[109,2]]}}}],["匹配",{"_index":280,"t":{"138":{"position":[[563,2],[608,2],[1097,2],[1142,2],[1655,2],[1700,2],[2356,2],[2401,2]]}}}],["单位",{"_index":62,"t":{"101":{"position":[[221,2],[387,2]]}}}],["单独",{"_index":105,"t":{"103":{"position":[[13,2]]},"115":{"position":[[23,2]]},"117":{"position":[[13,2]]}}}],["压缩",{"_index":51,"t":{"101":{"position":[[30,2]]}}}],["参数",{"_index":55,"t":{"101":{"position":[[72,2]]},"109":{"position":[[329,2],[968,2]]},"138":{"position":[[693,2],[1226,2],[1800,2],[2488,2]]}}}],["参考",{"_index":54,"t":{"101":{"position":[[45,2]]},"105":{"position":[[182,2],[342,2],[517,2],[589,2]]},"109":{"position":[[89,2],[217,2],[648,2],[855,2]]},"111":{"position":[[2,2],[8,2],[43,2]]},"115":{"position":[[79,2]]},"121":{"position":[[3,2]]},"132":{"position":[[129,2],[191,2],[466,2],[471,2],[581,2],[586,2],[709,2],[714,2],[823,2],[828,2],[983,2],[988,2],[1184,2],[1189,2]]},"134":{"position":[[107,2]]},"136":{"position":[[253,2]]},"138":{"position":[[1972,2]]}}}],["及时",{"_index":354,"t":{"142":{"position":[[201,2]]}}}],["反馈",{"_index":314,"t":{"140":{"position":[[46,2],[72,2]]}}}],["发布",{"_index":350,"t":{"142":{"position":[[183,2]]}}}],["发送",{"_index":276,"t":{"138":{"position":[[107,2]]}}}],["变",{"_index":109,"t":{"103":{"position":[[37,1]]}}}],["变得",{"_index":316,"t":{"140":{"position":[[55,2]]}}}],["变更",{"_index":113,"t":{"103":{"position":[[62,2],[86,2]]}}}],["可以",{"_index":31,"t":{"99":{"position":[[37,2]]},"103":{"position":[[11,2]]},"107":{"position":[[74,2]]},"109":{"position":[[526,2]]},"111":{"position":[[6,2],[40,2]]},"115":{"position":[[21,2],[77,2]]},"117":{"position":[[11,2]]},"121":{"position":[[1,2]]},"132":{"position":[[19,2]]},"134":{"position":[[343,2],[501,2]]},"136":{"position":[[251,2]]},"138":{"position":[[1970,2]]},"140":{"position":[[60,2]]}}}],["可用",{"_index":201,"t":{"130":{"position":[[11,2]]}}}],["可能",{"_index":218,"t":{"132":{"position":[[267,2]]},"142":{"position":[[80,2]]}}}],["同时",{"_index":68,"t":{"101":{"position":[[239,2]]},"142":{"position":[[143,2]]}}}],["同步",{"_index":58,"t":{"101":{"position":[[103,2],[215,2],[236,2],[243,2],[362,2]]}}}],["后缀",{"_index":132,"t":{"105":{"position":[[441,2]]}}}],["后面",{"_index":170,"t":{"109":{"position":[[202,2],[840,2]]}}}],["否则",{"_index":217,"t":{"132":{"position":[[263,2]]}}}],["启动",{"_index":251,"t":{"136":{"position":[[27,2]]},"140":{"position":[[4,2]]}}}],["启用",{"_index":216,"t":{"132":{"position":[[255,2]]},"136":{"position":[[52,2]]}}}],["周期",{"_index":59,"t":{"101":{"position":[[105,2],[218,2]]}}}],["命名",{"_index":119,"t":{"103":{"position":[[94,2]]},"107":{"position":[[113,2],[143,2]]}}}],["响应",{"_index":301,"t":{"138":{"position":[[1917,2],[1978,2],[2515,2]]}}}],["哪儿",{"_index":30,"t":{"99":{"position":[[33,2]]}}}],["回复",{"_index":277,"t":{"138":{"position":[[113,2]]},"142":{"position":[[207,2]]}}}],["因为",{"_index":220,"t":{"132":{"position":[[276,2]]}}}],["固定值",{"_index":22,"t":{"95":{"position":[[0,3]]}}}],["地方",{"_index":264,"t":{"138":{"position":[[12,2]]}}}],["基于",{"_index":6,"t":{"91":{"position":[[39,2]]}}}],["基本功能",{"_index":11,"t":{"91":{"position":[[70,4],[91,4]]}}}],["处理",{"_index":299,"t":{"138":{"position":[[1859,2],[2540,2]]}}}],["处理结果",{"_index":305,"t":{"138":{"position":[[1982,4]]}}}],["外",{"_index":311,"t":{"140":{"position":[[35,1]]}}}],["多",{"_index":135,"t":{"107":{"position":[[1,1]]}}}],["大",{"_index":110,"t":{"103":{"position":[[56,1]]},"138":{"position":[[592,1],[1126,1],[1684,1],[2385,1]]}}}],["大于",{"_index":64,"t":{"101":{"position":[[226,2]]}}}],["大部分",{"_index":173,"t":{"109":{"position":[[313,3],[952,3]]}}}],["太",{"_index":134,"t":{"107":{"position":[[0,1],[27,1]]}}}],["失败",{"_index":182,"t":{"109":{"position":[[415,2],[1062,2]]}}}],["如果",{"_index":241,"t":{"134":{"position":[[142,2],[223,2],[334,2],[492,2]]},"136":{"position":[[214,2]]},"138":{"position":[[1904,2]]},"140":{"position":[[28,2]]}}}],["始终",{"_index":345,"t":{"142":{"position":[[157,2]]}}}],["子",{"_index":267,"t":{"138":{"position":[[64,1]]}}}],["字",{"_index":44,"t":{"99":{"position":[[83,1]]}}}],["存在",{"_index":151,"t":{"107":{"position":[[116,2]]},"138":{"position":[[595,2],[1129,2],[1687,2],[1936,2],[2388,2]]}}}],["完善",{"_index":356,"t":{"142":{"position":[[228,2]]}}}],["完整",{"_index":348,"t":{"142":{"position":[[167,2]]}}}],["官",{"_index":17,"t":{"91":{"position":[[107,1]]},"111":{"position":[[17,1]]},"115":{"position":[[88,1]]},"121":{"position":[[12,1]]},"142":{"position":[[10,1]]}}}],["实现",{"_index":10,"t":{"91":{"position":[[66,2]]},"103":{"position":[[72,2],[80,2]]}}}],["实用性",{"_index":333,"t":{"142":{"position":[[91,3]]}}}],["对",{"_index":9,"t":{"91":{"position":[[55,1]]},"101":{"position":[[207,1]]},"138":{"position":[[1957,1]]}}}],["对于",{"_index":12,"t":{"91":{"position":[[75,2]]}}}],["对应",{"_index":127,"t":{"105":{"position":[[73,2],[234,2]]},"134":{"position":[[153,2]]}}}],["对象",{"_index":57,"t":{"101":{"position":[[98,2]]}}}],["寻找",{"_index":148,"t":{"107":{"position":[[94,2]]}}}],["封装",{"_index":107,"t":{"103":{"position":[[31,2]]},"115":{"position":[[41,2]]},"117":{"position":[[31,2]]}}}],["将",{"_index":178,"t":{"109":{"position":[[397,1],[1044,1]]},"138":{"position":[[570,1],[1104,1],[1662,1],[1819,1],[2363,1],[2507,1]]}}}],["将要",{"_index":291,"t":{"138":{"position":[[682,2],[1215,2],[1789,2],[2477,2]]}}}],["就是",{"_index":260,"t":{"138":{"position":[[3,2],[61,2]]}}}],["尽可能",{"_index":353,"t":{"142":{"position":[[197,3]]}}}],["属性",{"_index":91,"t":{"101":{"position":[[410,2]]}}}],["工具",{"_index":205,"t":{"132":{"position":[[49,2]]}}}],["平台",{"_index":33,"t":{"99":{"position":[[48,2]]},"105":{"position":[[75,2],[236,2],[451,2]]}}}],["并且",{"_index":271,"t":{"138":{"position":[[88,2]]}}}],["库",{"_index":8,"t":{"91":{"position":[[50,1]]},"103":{"position":[[33,1]]},"105":{"position":[[453,1]]},"111":{"position":[[27,1],[90,1]]},"115":{"position":[[43,1],[54,1],[74,1],[98,1]]},"117":{"position":[[33,1]]},"121":{"position":[[22,1]]},"138":{"position":[[1915,1],[1962,1]]}}}],["应为",{"_index":236,"t":{"134":{"position":[[73,2]]}}}],["应当",{"_index":198,"t":{"130":{"position":[[3,2]]}}}],["应用",{"_index":34,"t":{"99":{"position":[[51,2]]},"136":{"position":[[17,2]]},"142":{"position":[[95,2]]}}}],["开发者",{"_index":32,"t":{"99":{"position":[[45,3]]}}}],["开头",{"_index":248,"t":{"134":{"position":[[356,2],[514,2]]}}}],["异常",{"_index":185,"t":{"109":{"position":[[423,2],[1070,2]]}}}],["式",{"_index":295,"t":{"138":{"position":[[1253,1],[1919,1],[1980,1],[2517,1]]}}}],["引入",{"_index":166,"t":{"109":{"position":[[72,2],[631,2]]}}}],["引擎",{"_index":167,"t":{"109":{"position":[[82,2],[641,2],[714,2]]}}}],["引用",{"_index":257,"t":{"136":{"position":[[228,2]]},"138":{"position":[[103,2]]}}}],["当前",{"_index":158,"t":{"109":{"position":[[4,2]]}}}],["当然",{"_index":309,"t":{"140":{"position":[[25,2]]}}}],["形式",{"_index":298,"t":{"138":{"position":[[1857,2],[2538,2]]}}}],["待",{"_index":20,"t":{"93":{"position":[[0,1],[4,1]]}}}],["必填",{"_index":23,"t":{"95":{"position":[[16,2]]}}}],["必要",{"_index":164,"t":{"109":{"position":[[65,2],[624,2]]}}}],["必须",{"_index":175,"t":{"109":{"position":[[326,2],[965,2]]},"138":{"position":[[82,2],[1934,2]]}}}],["忘记",{"_index":122,"t":{"105":{"position":[[43,2],[204,2]]}}}],["忽略",{"_index":290,"t":{"138":{"position":[[613,2],[1147,2],[1705,2],[2406,2]]}}}],["情况",{"_index":183,"t":{"109":{"position":[[418,2],[1065,2]]},"136":{"position":[[246,2]]}}}],["想要",{"_index":242,"t":{"134":{"position":[[225,2]]}}}],["慌",{"_index":312,"t":{"140":{"position":[[42,1]]}}}],["成员",{"_index":71,"t":{"101":{"position":[[258,2]]}}}],["我们",{"_index":136,"t":{"107":{"position":[[4,2]]},"132":{"position":[[61,2]]},"138":{"position":[[35,2]]},"140":{"position":[[53,2]]},"142":{"position":[[124,2],[194,2],[222,2]]}}}],["或许",{"_index":258,"t":{"136":{"position":[[249,2]]}}}],["所在",{"_index":263,"t":{"138":{"position":[[9,2]]}}}],["所有",{"_index":69,"t":{"101":{"position":[[251,2]]},"103":{"position":[[88,2]]},"107":{"position":[[15,2],[32,2]]}}}],["所述",{"_index":131,"t":{"105":{"position":[[186,2],[346,2],[521,2]]}}}],["才",{"_index":304,"t":{"138":{"position":[[1963,1]]},"142":{"position":[[224,1]]}}}],["才能",{"_index":315,"t":{"140":{"position":[[50,2]]}}}],["扩展名",{"_index":235,"t":{"134":{"position":[[70,3]]}}}],["扫描",{"_index":246,"t":{"134":{"position":[[291,2],[449,2]]}}}],["批次",{"_index":86,"t":{"101":{"position":[[375,2]]}}}],["抛出",{"_index":184,"t":{"109":{"position":[[421,2],[1068,2]]}}}],["拍",{"_index":99,"t":{"101":{"position":[[442,1]]}}}],["挂",{"_index":87,"t":{"101":{"position":[[379,1]]}}}],["接下来",{"_index":228,"t":{"134":{"position":[[0,3]]},"138":{"position":[[0,3]]},"140":{"position":[[0,3]]}}}],["接口",{"_index":114,"t":{"103":{"position":[[67,2]]}}}],["提供",{"_index":191,"t":{"113":{"position":[[4,2]]},"132":{"position":[[296,2]]}}}],["提出",{"_index":319,"t":{"140":{"position":[[80,2]]},"142":{"position":[[66,2]]}}}],["插件",{"_index":123,"t":{"105":{"position":[[64,2],[225,2]]}}}],["搜索",{"_index":324,"t":{"142":{"position":[[48,2]]}}}],["支持",{"_index":303,"t":{"138":{"position":[[1960,2]]}}}],["改",{"_index":111,"t":{"103":{"position":[[57,1]]}}}],["放在",{"_index":292,"t":{"138":{"position":[[691,2],[1224,2],[1798,2],[2486,2]]}}}],["数据",{"_index":52,"t":{"101":{"position":[[32,2],[360,2]]}}}],["整合",{"_index":43,"t":{"99":{"position":[[72,2]]}}}],["文",{"_index":226,"t":{"132":{"position":[[469,1],[584,1],[712,1],[826,1],[986,1],[1187,1]]}}}],["文件",{"_index":245,"t":{"134":{"position":[[288,2],[341,2],[446,2],[499,2]]}}}],["文件名",{"_index":233,"t":{"134":{"position":[[64,3]]}}}],["文件夹",{"_index":231,"t":{"134":{"position":[[28,3]]}}}],["文件目录",{"_index":230,"t":{"134":{"position":[[9,4],[158,4]]}}}],["文本",{"_index":285,"t":{"138":{"position":[[588,2],[1122,2],[1680,2],[2381,2]]}}}],["文档",{"_index":5,"t":{"91":{"position":[[28,2]]},"107":{"position":[[82,2]]},"128":{"position":[[2,2]]},"138":{"position":[[1974,2]]},"142":{"position":[[37,2],[97,2],[134,2],[152,2],[175,2]]}}}],["方式",{"_index":147,"t":{"107":{"position":[[91,2]]}}}],["施工",{"_index":21,"t":{"93":{"position":[[1,2],[5,2]]},"111":{"position":[[35,2]]},"115":{"position":[[56,2]]},"119":{"position":[[0,2]]},"125":{"position":[[5,2]]}}}],["无法",{"_index":256,"t":{"136":{"position":[[226,2]]}}}],["日",{"_index":36,"t":{"99":{"position":[[60,1]]}}}],["日后",{"_index":38,"t":{"99":{"position":[[63,2]]}}}],["早",{"_index":253,"t":{"136":{"position":[[209,1]]}}}],["时",{"_index":65,"t":{"101":{"position":[[229,1],[357,1]]},"138":{"position":[[568,1],[1102,1],[1660,1],[2361,1]]}}}],["时不时",{"_index":331,"t":{"142":{"position":[[83,3]]}}}],["时候",{"_index":74,"t":{"101":{"position":[[307,2]]},"132":{"position":[[219,2]]},"138":{"position":[[611,2],[1145,2],[1703,2],[2404,2]]}}}],["时间",{"_index":89,"t":{"101":{"position":[[384,2]]}}}],["是否",{"_index":50,"t":{"101":{"position":[[28,2]]}}}],["更好",{"_index":317,"t":{"140":{"position":[[57,2]]}}}],["更新",{"_index":332,"t":{"142":{"position":[[87,2]]}}}],["最终",{"_index":328,"t":{"142":{"position":[[72,2],[219,2]]}}}],["服务器",{"_index":67,"t":{"101":{"position":[[233,3],[246,3]]},"109":{"position":[[16,3]]},"132":{"position":[[259,3]]}}}],["服务器进行",{"_index":61,"t":{"101":{"position":[[210,5]]}}}],["本",{"_index":194,"t":{"128":{"position":[[0,1]]}}}],["本地",{"_index":247,"t":{"134":{"position":[[339,2],[497,2]]}}}],["本手册",{"_index":329,"t":{"142":{"position":[[75,3],[230,3]]}}}],["机器人",{"_index":3,"t":{"91":{"position":[[23,3],[61,3]]},"128":{"position":[[135,3]]},"130":{"position":[[19,3]]}}}],["权",{"_index":169,"t":{"109":{"position":[[189,1],[827,1]]}}}],["来到",{"_index":1,"t":{"91":{"position":[[2,2]]}}}],["极其",{"_index":336,"t":{"142":{"position":[[113,2]]}}}],["构建",{"_index":171,"t":{"109":{"position":[[303,2],[570,2],[942,2]]}}}],["查看",{"_index":35,"t":{"99":{"position":[[55,2]]},"105":{"position":[[607,2]]}}}],["查询",{"_index":85,"t":{"101":{"position":[[371,2]]}}}],["查阅",{"_index":145,"t":{"107":{"position":[[86,2]]}}}],["标准",{"_index":14,"t":{"91":{"position":[[88,2]]},"115":{"position":[[52,2]]}}}],["标注",{"_index":252,"t":{"136":{"position":[[34,2]]}}}],["核心",{"_index":7,"t":{"91":{"position":[[48,2]]},"111":{"position":[[25,2],[88,2]]},"115":{"position":[[72,2],[96,2]]},"121":{"position":[[20,2]]}}}],["检测",{"_index":176,"t":{"109":{"position":[[386,2],[1033,2]]}}}],["概率",{"_index":286,"t":{"138":{"position":[[593,2],[1127,2],[1685,2],[2386,2]]}}}],["模块",{"_index":103,"t":{"103":{"position":[[3,2],[43,2]]},"115":{"position":[[13,2]]},"117":{"position":[[3,2]]}}}],["模式",{"_index":27,"t":{"99":{"position":[[16,2]]}}}],["欢迎",{"_index":0,"t":{"91":{"position":[[0,2]]}}}],["此处",{"_index":138,"t":{"107":{"position":[[9,2]]},"109":{"position":[[700,2]]},"138":{"position":[[33,2]]}}}],["此时",{"_index":275,"t":{"138":{"position":[[97,2]]}}}],["此类",{"_index":39,"t":{"99":{"position":[[65,2]]}}}],["段",{"_index":45,"t":{"99":{"position":[[84,1]]}}}],["比如",{"_index":128,"t":{"105":{"position":[[78,2],[239,2]]},"107":{"position":[[124,2]]}}}],["毫秒",{"_index":63,"t":{"101":{"position":[[223,2],[283,2],[389,2]]}}}],["沙箱",{"_index":307,"t":{"140":{"position":[[12,2]]}}}],["注意",{"_index":76,"t":{"101":{"position":[[311,2]]},"132":{"position":[[199,2]]}}}],["注解",{"_index":289,"t":{"138":{"position":[[605,2],[1139,2],[1697,2],[2398,2]]}}}],["注释",{"_index":341,"t":{"142":{"position":[[136,2]]}}}],["消息",{"_index":268,"t":{"138":{"position":[[68,2],[110,2],[579,2],[590,2],[706,2],[1113,2],[1124,2],[1239,2],[1671,2],[1682,2],[1813,2],[2372,2],[2383,2],[2501,2]]}}}],["消耗",{"_index":337,"t":{"142":{"position":[[115,2]]}}}],["添加",{"_index":207,"t":{"132":{"position":[[57,2]]}}}],["源码",{"_index":146,"t":{"107":{"position":[[88,2]]},"142":{"position":[[43,2],[131,2],[162,2]]}}}],["演示",{"_index":141,"t":{"107":{"position":[[22,2]]}}}],["然后",{"_index":177,"t":{"109":{"position":[[395,2],[1042,2]]},"132":{"position":[[53,2]]}}}],["版本",{"_index":129,"t":{"105":{"position":[[180,2],[340,2],[515,2],[587,2],[592,2]]},"132":{"position":[[127,2],[189,2],[463,2],[578,2],[706,2],[820,2],[980,2],[1181,2]]},"142":{"position":[[180,2]]}}}],["特殊",{"_index":282,"t":{"138":{"position":[[577,2],[1111,2],[1669,2],[2370,2]]}}}],["独立",{"_index":104,"t":{"103":{"position":[[6,2]]},"115":{"position":[[16,2]]},"117":{"position":[[6,2]]}}}],["环境",{"_index":189,"t":{"111":{"position":[[77,2]]},"128":{"position":[[10,2]]},"138":{"position":[[1929,2]]}}}],["现实",{"_index":142,"t":{"107":{"position":[[28,2]]}}}],["生成",{"_index":347,"t":{"142":{"position":[[164,2]]}}}],["生效",{"_index":66,"t":{"101":{"position":[[230,2],[355,2]]}}}],["用于",{"_index":162,"t":{"109":{"position":[[41,2],[600,2]]},"134":{"position":[[36,2]]}}}],["用户",{"_index":159,"t":{"109":{"position":[[6,2]]},"138":{"position":[[105,2],[127,2],[146,2]]}}}],["由此",{"_index":343,"t":{"142":{"position":[[145,2]]}}}],["疑惑",{"_index":327,"t":{"142":{"position":[[68,2],[215,2]]}}}],["疑问",{"_index":320,"t":{"140":{"position":[[82,2]]}}}],["监听",{"_index":265,"t":{"138":{"position":[[20,2],[25,2],[37,2],[684,2],[700,2],[1217,2],[1233,2],[1791,2],[1807,2],[2479,2],[2495,2]]}}}],["目录",{"_index":190,"t":{"113":{"position":[[1,2]]}}}],["直接",{"_index":186,"t":{"109":{"position":[[528,2]]}}}],["相关",{"_index":81,"t":{"101":{"position":[[320,2]]},"142":{"position":[[213,2]]}}}],["相当于",{"_index":188,"t":{"111":{"position":[[60,3]]}}}],["真正",{"_index":179,"t":{"109":{"position":[[398,2],[1045,2]]}}}],["示例",{"_index":157,"t":{"107":{"position":[[177,2]]},"113":{"position":[[19,2]]}}}],["社区",{"_index":318,"t":{"140":{"position":[[77,2]]},"142":{"position":[[63,2],[209,2]]}}}],["票据",{"_index":40,"t":{"99":{"position":[[67,2]]}}}],["秒",{"_index":72,"t":{"101":{"position":[[292,1]]}}}],["积极",{"_index":313,"t":{"140":{"position":[[44,2]]}}}],["移除",{"_index":283,"t":{"138":{"position":[[581,2],[1115,2],[1673,2],[2374,2]]}}}],["程序",{"_index":213,"t":{"132":{"position":[[229,2],[265,2]]},"140":{"position":[[6,2]]}}}],["程序运行",{"_index":222,"t":{"132":{"position":[[300,4]]}}}],["程度",{"_index":93,"t":{"101":{"position":[[415,2]]}}}],["空格",{"_index":288,"t":{"138":{"position":[[599,2],[617,2],[1133,2],[1151,2],[1691,2],[1709,2],[2392,2],[2410,2]]}}}],["章节",{"_index":238,"t":{"134":{"position":[[109,2]]}}}],["第三方",{"_index":300,"t":{"138":{"position":[[1912,3]]}}}],["等",{"_index":80,"t":{"101":{"position":[[319,1]]},"103":{"position":[[82,1],[114,1]]},"105":{"position":[[86,1],[247,1]]},"132":{"position":[[48,1]]},"136":{"position":[[245,1]]},"138":{"position":[[2514,1]]}}}],["等待",{"_index":88,"t":{"101":{"position":[[381,2],[401,2]]}}}],["简单",{"_index":192,"t":{"113":{"position":[[17,2]]}}}],["篇",{"_index":259,"t":{"136":{"position":[[257,1]]}}}],["类",{"_index":150,"t":{"107":{"position":[[111,1]]},"136":{"position":[[29,1]]}}}],["类似",{"_index":279,"t":{"138":{"position":[[122,2]]}}}],["类型",{"_index":117,"t":{"103":{"position":[[77,2]]},"138":{"position":[[689,2],[703,2],[1222,2],[1236,2],[1796,2],[1810,2],[1920,2],[2484,2],[2498,2],[2518,2]]}}}],["精力",{"_index":338,"t":{"142":{"position":[[117,2]]}}}],["精力有限",{"_index":334,"t":{"142":{"position":[[101,4]]}}}],["紧随",{"_index":346,"t":{"142":{"position":[[160,2]]}}}],["组件",{"_index":4,"t":{"91":{"position":[[26,2],[36,2]]},"95":{"position":[[31,2]]},"113":{"position":[[14,2]]},"128":{"position":[[122,2]]},"132":{"position":[[236,2],[483,2],[726,2],[1057,2]]}}}],["终止",{"_index":219,"t":{"132":{"position":[[272,2]]}}}],["结构",{"_index":239,"t":{"134":{"position":[[135,2]]}}}],["结果",{"_index":115,"t":{"103":{"position":[[70,2]]},"109":{"position":[[405,2],[1052,2]]}}}],["绝大多数",{"_index":13,"t":{"91":{"position":[[83,4]]}}}],["维持",{"_index":221,"t":{"132":{"position":[[298,2]]}}}],["缓存",{"_index":56,"t":{"101":{"position":[[96,2]]}}}],["编",{"_index":195,"t":{"128":{"position":[[1,1]]}}}],["编写",{"_index":196,"t":{"128":{"position":[[127,2]]},"138":{"position":[[16,2]]},"142":{"position":[[106,2]]}}}],["网",{"_index":18,"t":{"91":{"position":[[108,1]]},"111":{"position":[[18,1]]},"115":{"position":[[89,1]]},"121":{"position":[[13,1]]},"142":{"position":[[11,1]]}}}],["网站",{"_index":330,"t":{"142":{"position":[[78,2],[233,2]]}}}],["翻阅",{"_index":323,"t":{"142":{"position":[[45,2]]}}}],["考虑",{"_index":203,"t":{"132":{"position":[[21,2]]},"142":{"position":[[226,2]]}}}],["能力",{"_index":223,"t":{"132":{"position":[[305,2]]},"142":{"position":[[27,2]]}}}],["能够",{"_index":212,"t":{"132":{"position":[[226,2]]}}}],["脑瓜儿",{"_index":100,"t":{"101":{"position":[[443,3]]}}}],["自动",{"_index":125,"t":{"105":{"position":[[69,2],[230,2]]},"132":{"position":[[270,2]]},"142":{"position":[[185,2]]}}}],["自定义",{"_index":244,"t":{"134":{"position":[[278,3],[436,3]]}}}],["自行",{"_index":165,"t":{"109":{"position":[[70,2],[629,2]]}}}],["至少",{"_index":200,"t":{"130":{"position":[[7,2]]}}}],["获取",{"_index":154,"t":{"107":{"position":[[129,2]]},"109":{"position":[[2,2],[573,2]]}}}],["要",{"_index":172,"t":{"109":{"position":[[305,1],[944,1]]},"134":{"position":[[336,1],[494,1]]}}}],["要求",{"_index":270,"t":{"138":{"position":[[77,2],[1901,2]]}}}],["规律",{"_index":152,"t":{"107":{"position":[[121,2]]}}}],["触发",{"_index":95,"t":{"101":{"position":[[420,2]]}}}],["试试看",{"_index":308,"t":{"140":{"position":[[19,3]]}}}],["说",{"_index":272,"t":{"138":{"position":[[90,1]]}}}],["说明",{"_index":344,"t":{"142":{"position":[[155,2]]}}}],["请",{"_index":224,"t":{"132":{"position":[[465,1],[580,1],[708,1],[822,1],[982,1],[1183,1]]}}}],["请求",{"_index":163,"t":{"109":{"position":[[43,2],[306,2],[602,2],[945,2]]}}}],["调用",{"_index":77,"t":{"101":{"position":[[313,2],[422,2]]}}}],["谈",{"_index":37,"t":{"99":{"position":[[61,1]]}}}],["资源",{"_index":229,"t":{"134":{"position":[[7,2],[156,2],[286,2],[444,2]]}}}],["路径",{"_index":144,"t":{"107":{"position":[[41,2]]},"134":{"position":[[123,2],[230,2],[293,2],[451,2]]}}}],["过程",{"_index":83,"t":{"101":{"position":[[365,2]]},"103":{"position":[[52,2]]}}}],["运行",{"_index":214,"t":{"132":{"position":[[233,2]]}}}],["返回",{"_index":180,"t":{"109":{"position":[[407,2],[1054,2]]}}}],["返回值",{"_index":296,"t":{"138":{"position":[[1841,3],[1906,3],[2522,3]]}}}],["这个",{"_index":281,"t":{"138":{"position":[[575,2],[1109,2],[1667,2],[2368,2]]}}}],["进行",{"_index":28,"t":{"99":{"position":[[18,2]]},"101":{"position":[[302,2]]},"134":{"position":[[254,2]]}}}],["连接",{"_index":29,"t":{"99":{"position":[[20,2]]}}}],["选",{"_index":49,"t":{"101":{"position":[[6,1]]},"109":{"position":[[324,1],[963,1]]}}}],["选择",{"_index":126,"t":{"105":{"position":[[71,2],[232,2],[444,2],[610,2]]},"107":{"position":[[166,2]]},"109":{"position":[[75,2],[634,2]]}}}],["通常",{"_index":155,"t":{"107":{"position":[[139,2]]}}}],["通用",{"_index":322,"t":{"142":{"position":[[25,2]]}}}],["通过",{"_index":90,"t":{"101":{"position":[[405,2]]},"107":{"position":[[76,2]]},"132":{"position":[[241,2]]},"136":{"position":[[32,2]]},"138":{"position":[[602,2],[1136,2],[1694,2],[2395,2]]},"142":{"position":[[41,2]]}}}],["逻辑",{"_index":261,"t":{"138":{"position":[[5,2]]}}}],["遇到",{"_index":255,"t":{"136":{"position":[[223,2]]},"140":{"position":[[30,2]]}}}],["那么",{"_index":302,"t":{"138":{"position":[[1923,2]]}}}],["部署",{"_index":351,"t":{"142":{"position":[[187,2]]}}}],["都",{"_index":16,"t":{"91":{"position":[[98,1]]},"107":{"position":[[38,1]]},"109":{"position":[[319,1],[958,1]]}}}],["配置",{"_index":48,"t":{"101":{"position":[[2,2],[107,2],[304,2],[407,2]]},"134":{"position":[[38,2],[220,2],[256,2],[281,2],[439,2]]}}}],["配置文件",{"_index":25,"t":{"95":{"position":[[22,4]]},"134":{"position":[[44,4],[97,4],[115,4],[249,4]]}}}],["里",{"_index":293,"t":{"138":{"position":[[695,1],[1228,1],[1802,1],[2490,1]]}}}],["鉴",{"_index":168,"t":{"109":{"position":[[188,1],[826,1]]}}}],["链接",{"_index":227,"t":{"132":{"position":[[473,2],[588,2],[716,2],[830,2],[990,2],[1191,2]]}}}],["问题",{"_index":82,"t":{"101":{"position":[[322,2]]},"140":{"position":[[37,2],[48,2],[74,2]]}}}],["阻塞",{"_index":294,"t":{"138":{"position":[[1251,2],[1854,2],[2535,2]]}}}],["降低",{"_index":94,"t":{"101":{"position":[[418,2]]}}}],["限制",{"_index":96,"t":{"101":{"position":[[426,2]]}}}],["随便",{"_index":101,"t":{"101":{"position":[[446,2]]}}}],["随意",{"_index":234,"t":{"134":{"position":[[67,2]]}}}],["随着",{"_index":349,"t":{"142":{"position":[[178,2]]}}}],["需要",{"_index":75,"t":{"101":{"position":[[309,2]]},"107":{"position":[[98,2]]},"109":{"position":[[68,2],[77,2],[627,2],[636,2]]},"132":{"position":[[63,2],[222,2]]},"136":{"position":[[23,2]]},"138":{"position":[[1910,2]]}}}],["非",{"_index":297,"t":{"138":{"position":[[1853,1],[2534,1]]}}}],["项目",{"_index":202,"t":{"132":{"position":[[16,2]]},"134":{"position":[[5,2],[133,2]]},"138":{"position":[[1927,2]]}}}],["预期",{"_index":310,"t":{"140":{"position":[[33,2]]}}}],["预防",{"_index":254,"t":{"136":{"position":[[211,2]]}}}],["频率",{"_index":78,"t":{"101":{"position":[[315,2],[424,2]]}}}],["频道",{"_index":60,"t":{"101":{"position":[[208,2],[253,2]]},"138":{"position":[[65,2]]},"140":{"position":[[14,2]]}}}],["额外",{"_index":206,"t":{"132":{"position":[[55,2]]}}}],["风格",{"_index":120,"t":{"103":{"position":[[112,2]]},"134":{"position":[[137,2]]}}}],["风险",{"_index":97,"t":{"101":{"position":[[429,2]]}}}],["首先",{"_index":197,"t":{"130":{"position":[[0,2]]},"132":{"position":[[0,2]]},"142":{"position":[[127,2]]}}}],["验证",{"_index":181,"t":{"109":{"position":[[413,2],[1060,2]]}}}],["默认",{"_index":53,"t":{"101":{"position":[[35,2],[264,2],[393,2]]},"134":{"position":[[299,2],[457,2]]}}}],["默认值",{"_index":98,"t":{"101":{"position":[[433,3]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file +[{"documents":[{"i":90,"t":"首页","u":"/docs/3.0.0.0-alpha.7/","b":["文档"]},{"i":92,"t":"BOT配置文件","u":"/docs/3.0.0.0-alpha.7/bot-config/","b":["文档"]},{"i":102,"t":"快速开始","u":"/docs/3.0.0.0-alpha.7/quick-start/","b":["文档","快速开始"]},{"i":114,"t":"使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/simbot-core","b":["文档","快速开始"]},{"i":116,"t":"使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/api","b":["文档","快速开始"]},{"i":124,"t":"使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/stdlib","b":["文档","快速开始"]},{"i":126,"t":"使用SpringBoot","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","b":["文档","快速开始"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/90",[0,2.174]],["t/92",[1,0.606,2,1.764]],["t/102",[3,1.764,4,1.764]],["t/114",[1,0.44,5,0.44,6,1.281,7,0.89]],["t/116",[1,0.606,5,0.606]],["t/124",[5,0.51,7,1.031,8,1.484]],["t/126",[1,0.606,5,0.606]]],"invertedIndex":[["",{"_index":1,"t":{"92":{"position":[[0,3]]},"114":{"position":[[2,6]]},"116":{"position":[[2,3]]},"126":{"position":[[2,10]]}}}],["使用",{"_index":5,"t":{"114":{"position":[[0,2]]},"116":{"position":[[0,2]]},"124":{"position":[[0,2]]},"126":{"position":[[0,2]]}}}],["库",{"_index":7,"t":{"114":{"position":[[10,1]]},"124":{"position":[[4,1]]}}}],["开始",{"_index":4,"t":{"102":{"position":[[2,2]]}}}],["快速",{"_index":3,"t":{"102":{"position":[[0,2]]}}}],["标准",{"_index":8,"t":{"124":{"position":[[2,2]]}}}],["核心",{"_index":6,"t":{"114":{"position":[[8,2]]}}}],["配置文件",{"_index":2,"t":{"92":{"position":[[3,4]]}}}],["首页",{"_index":0,"t":{"90":{"position":[[0,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":94,"t":"component","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#component","p":92},{"i":96,"t":"clientId","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#clientid","p":92},{"i":98,"t":"token","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#token","p":92},{"i":100,"t":"config","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#config","p":92},{"i":104,"t":"文档列表","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"#文档列表","p":102},{"i":106,"t":"📄️ 使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":108,"t":"📄️ 使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":110,"t":"📄️ 使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":112,"t":"📄️ 使用SpringBoot","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":118,"t":"安装","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#安装","p":116},{"i":120,"t":"使用","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#使用","p":116},{"i":122,"t":"获取用户频道服务器列表","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#获取用户频道服务器列表","p":116},{"i":127,"t":"前言","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前言","p":126},{"i":129,"t":"前提准备","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前提准备","p":126},{"i":131,"t":"项目构建","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#项目构建","p":126},{"i":133,"t":"BOT配置","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#bot配置","p":126},{"i":135,"t":"启动类","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动类","p":126},{"i":137,"t":"监听事件","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#监听事件","p":126},{"i":139,"t":"启动","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动","p":126},{"i":141,"t":"更多","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#更多","p":126}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/94",[0,1.122]],["t/96",[0,1.122]],["t/98",[0,1.122]],["t/100",[0,1.122]],["t/104",[1,2.583,2,2.083]],["t/106",[0,0.885,3,1.312]],["t/108",[3,1.083,4,2.134,5,1.721]],["t/110",[0,0.623,3,0.923,5,1.466,6,1.817]],["t/112",[0,0.885,3,1.312]],["t/118",[7,3.273]],["t/120",[3,1.662]],["t/122",[2,1.276,8,1.583,9,1.583,10,1.583,11,1.583]],["t/127",[12,3.273]],["t/129",[13,2.583,14,2.583]],["t/131",[15,2.583,16,2.583]],["t/133",[0,0.885,17,2.583]],["t/135",[18,2.083,19,2.583]],["t/137",[20,2.583,21,2.583]],["t/139",[18,2.64]],["t/141",[22,2.583,23,2.583]]],"invertedIndex":[["",{"_index":0,"t":{"94":{"position":[[0,9]]},"96":{"position":[[0,8]]},"98":{"position":[[0,5]]},"100":{"position":[[0,6]]},"106":{"position":[[6,3]]},"110":{"position":[[6,6]]},"112":{"position":[[6,10]]},"133":{"position":[[0,3]]}}}],["事件",{"_index":21,"t":{"137":{"position":[[2,2]]}}}],["使用",{"_index":3,"t":{"106":{"position":[[4,2]]},"108":{"position":[[4,2]]},"110":{"position":[[4,2]]},"112":{"position":[[4,2]]},"120":{"position":[[0,2]]}}}],["准备",{"_index":14,"t":{"129":{"position":[[2,2]]}}}],["列表",{"_index":2,"t":{"104":{"position":[[2,2]]},"122":{"position":[[9,2]]}}}],["前提",{"_index":13,"t":{"129":{"position":[[0,2]]}}}],["前言",{"_index":12,"t":{"127":{"position":[[0,2]]}}}],["启动",{"_index":18,"t":{"135":{"position":[[0,2]]},"139":{"position":[[0,2]]}}}],["多",{"_index":23,"t":{"141":{"position":[[1,1]]}}}],["安装",{"_index":7,"t":{"118":{"position":[[0,2]]}}}],["库",{"_index":5,"t":{"108":{"position":[[8,1]]},"110":{"position":[[14,1]]}}}],["文档",{"_index":1,"t":{"104":{"position":[[0,2]]}}}],["更",{"_index":22,"t":{"141":{"position":[[0,1]]}}}],["服务器",{"_index":11,"t":{"122":{"position":[[6,3]]}}}],["构建",{"_index":16,"t":{"131":{"position":[[2,2]]}}}],["标准",{"_index":4,"t":{"108":{"position":[[6,2]]}}}],["核心",{"_index":6,"t":{"110":{"position":[[12,2]]}}}],["用户",{"_index":9,"t":{"122":{"position":[[2,2]]}}}],["监听",{"_index":20,"t":{"137":{"position":[[0,2]]}}}],["类",{"_index":19,"t":{"135":{"position":[[2,1]]}}}],["获取",{"_index":8,"t":{"122":{"position":[[0,2]]}}}],["配置",{"_index":17,"t":{"133":{"position":[[3,2]]}}}],["项目",{"_index":15,"t":{"131":{"position":[[0,2]]}}}],["频道",{"_index":10,"t":{"122":{"position":[[4,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":91,"t":"欢迎来到 Simple Robot 的KOOK机器人组件文档。 KOOK组件是基于 simbot核心库 API对 KOOK机器人 的实现。 基本功能 对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。","s":"首页","u":"/docs/3.0.0.0-alpha.7/","h":"","p":90},{"i":93,"t":"待施工 待施工 xxx.bot.json { \"component\": \"simbot.kook\", \"clientId\": \"Your client ID\", \"token\": \"Your ws token\", \"config\": { \"isCompress\": true, \"syncPeriods\": { \"guildSyncPeriod\": 60000, \"memberSyncPeriods\": 60000 } } }","s":"BOT配置文件","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"","p":92},{"i":95,"t":"固定值 simbot.kook,必填,代表此配置文件为KOOK组件的。","s":"component","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#component","p":92},{"i":97,"t":"BOT的 Client ID。","s":"clientId","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#clientid","p":92},{"i":99,"t":"BOT使用 websocket 模式进行连接的 Token . 在哪儿? 可以在 KOOK开发者平台-应用 中查看。 后日谈 日后此类票据信息会整合到 ticket 字段内。 { \"component\": \"simbot.kook\", \"ticket\": { \"clientId\": \"Your client ID\", \"token\": \"Your ws token\" } }","s":"token","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#token","p":92},{"i":101,"t":"其他配置,可选。 config.isCompress​ 是否压缩数据。默认为 true。 参考 Gateway API 中的 compress 参数。 config.syncPeriods​ 缓存对象信息的同步周期配置。 { \"config\": { \"syncPeriods\": { \"guildSyncPeriod\": 180000, \"batchDelay\": 0 } } } guildSyncPeriod 对频道服务器进行同步的周期,单位毫秒,大于0时生效。服务器同步的同时会去同步此服务器下的所有频道列表与成员列表。 默认为 180000,即 180000毫秒 -> 180秒 -> 3分钟。 进行配置的时候需要注意调用频率上限等相关问题。 batchDelay 当 guildSyncPeriod 生效时,在数据同步的过程中每一次查询(即批次)后挂起等待的时间,单位毫秒。 默认为 0,即不等待。 通过配置此属性可一定程度上降低触发调用频率限制的风险。 默认值的由来? 一拍脑瓜儿随便写的。","s":"config","u":"/docs/3.0.0.0-alpha.7/bot-config/","h":"#config","p":92},{"i":103,"t":"此目录中提供一些使用KOOK组件的简单示例。","s":"快速开始","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":105,"t":"📄️ 使用API API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。 📄️ 使用标准库 施工中 📄️ 使用simbot核心库 你可以参考simbot3官网中的 《使用核心库》 📄️ 使用SpringBoot 前言","s":"文档列表","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"#文档列表","p":102},{"i":107,"t":"API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。","s":"📄️ 使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":109,"t":"施工中","s":"📄️ 使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":111,"t":"你可以参考simbot3官网中的 《使用核心库》","s":"📄️ 使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":113,"t":"前言","s":"📄️ 使用SpringBoot","u":"/docs/3.0.0.0-alpha.7/quick-start/","h":"","p":102},{"i":115,"t":"其他参考 你可以参考simbot3官网中的 《使用核心库》 TODO 施工中 你可以先参考 使用SpringBoot,它相当于在 Spring Boot 环境下使用simbot核心库。","s":"使用simbot核心库","u":"/docs/3.0.0.0-alpha.7/quick-start/simbot-core","h":"","p":114},{"i":117,"t":"API模块是独立的,你可以单独使用它作为 KOOK API 的封装库。 全变了 API模块在 #82 的过程中会大改, 包括变更API接口的结果实现、事件类型的实现等,以及变更所有API的命名为 GetXxxListApi 风格等。","s":"使用API","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"","p":116},{"i":119,"t":"Gradle Kotlin DSL Gradle Groovy Maven // 不要忘记使用 Gradle 的 kotlin 插件来允许自动选择对应平台,比如JVM或JS等。 implementation(\"love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8\") // 版本参考下文所述的 Releases // 不要忘记使用 Gradle 的 kotlin 插件来允许自动选择对应平台,比如JVM或JS等。 implementation 'love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8' // 版本参考下文所述的 Releases love.forte.simbot.component simbot-component-kook-api 3.2.0.0-alpha.8 版本参考 版本可前往 Releases 查看并选择。","s":"安装","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#安装","p":116},{"i":121,"t":"太多了 我们不会在此处一一列举所有的API做演示,这不太现实。 所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。 API包装类的命名也存在一定的规律,比如一个 获取某列表 的API通常会被命名为 XxxListRequest。 下文会选择一小部分API来做示例。","s":"使用","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#使用","p":116},{"i":123,"t":"以 获取当前用户(BOT)加入的服务器列表 为例。 Kotlin Java // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(Java) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GuildListRequest.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData = api.requestData(client, authorization) guildListData.items.forEach { ... } // 也可以直接 guildListData.forEach { ... } // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-java 引擎为例。 var client = HttpClientKt.HttpClient(Java.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建要请求的API,大部分API都有一些可选或必须的参数。 var api = GuildListRequest.create(); // requestDataBlocking 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) var guildListData = api.requestDataBlocking(client, authorization); for (var guild : guildListData) { System.out.println(guild); }","s":"获取用户频道服务器列表","u":"/docs/3.0.0.0-alpha.7/quick-start/api","h":"#获取用户频道服务器列表","p":116},{"i":125,"t":"TODO 施工中","s":"使用标准库","u":"/docs/3.0.0.0-alpha.7/quick-start/stdlib","h":"","p":124},{"i":128,"t":"本编文档介绍在JVM环境下使用: simboot-core-spring-boot-starter (simbot3 的 Spring Boot Starter) simbot-component-kook-core (simbot3 KOOK组件) 来编写一个KOOK机器人。","s":"前言","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前言","p":126},{"i":130,"t":"首先你应当准备至少一个可用的 KOOK机器人 。","s":"前提准备","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#前提准备","p":126},{"i":132,"t":"首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。 然后额外添加两个我们需要的依赖: love.forte.simbot.boot:simboot-core-spring-boot-starter (版本参考) love.forte.simbot.component:simbot-component-kook-core (版本参考) 保持住 注意,在使用 Spring Boot 的时候你需要一些能够使程序保持运行的组件,例如通过 spring-web 启用一个服务器,否则程序可能会自动终止。 因为simbot的 starter 并不提供维持程序运行的能力。 Gradle Kotlin DSL Gradle Groovy Maven // simbot core starter implementation(\"love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION\") // 版本请参考前文的参考链接 // KOOK组件 implementation(\"love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8\") // 版本请参考前文的参考链接 // simbot core starter implementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // 版本请参考前文的参考链接 // KOOK组件 implementation 'love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8' // 版本请参考前文的参考链接 love.forte.simbot.boot simboot-core-spring-boot-starter ${SIMBOT_VERSION} love.forte.simbot.component simbot-component-kook-core 3.2.0.0-alpha.8 ","s":"项目构建","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#项目构建","p":126},{"i":134,"t":"接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot 或 .bot.json ) 。 配置文件的具体内容则参考章节 BOT配置文件 。 此路径以 IDEA 的项目结构风格为准,如果是其他IDE,使用对应的资源文件目录。 ${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json 可配置 如果想要修改此路径,可在 Spring Boot 的配置文件中进行配置: properties YAML # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 simbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot* simbot: # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 bot-configuration-resources: - 'classpath:simbot-bots/*.bot*'","s":"BOT配置","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#bot配置","p":126},{"i":136,"t":"像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot : Kotlin Java com.example.App.kt @EnableSimbot @SpringBootApplication class App fun main(vararg args: String) { runApplication(args = args) } 早有预防 如果你在Java中遇到了无法引用 @EnableSimbot 等情况,或许可以参考 这篇FAQ。 com.example.App.java @EnableSimbot @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }","s":"启动类","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动类","p":126},{"i":138,"t":"接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。 此处我们监听 ChannelMessageEvent,也就是 子频道的消息事件。 假设:要求bot必须被AT,并且说一句 你好,此时bot会引用用户发送的消息并回复 你也好! ,类似于: 用户: @BOT 你好 BOT: > 用户: @BOT 你好 你也好! Kotlin Java Blocking Java Async Java Reactive com.example.listener.ExampleListener.kt import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component class ExampleListener { @Listener @Filter(value = \"你好\", targets = Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 event.reply(\"你也好!\") } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public void onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // Java中的阻塞式API event.replyBlocking(\"你也好!\"); } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 CompletableFuture 作为返回值,simbot会以非阻塞的形式处理它 return event.replyAsync(\"你也好!\"); } } 有要求 如果返回值是需要第三方库的响应式类型,那么你的项目环境依赖中必须存在 Kotlin courotines 对其的支持库才可使用。 你可以参考文档中 响应式的处理结果 的内容。 com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public Mono onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它 return Mono.fromCompletionStage(event.replyAsync(\"你也好!\")); } }","s":"监听事件","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#监听事件","p":126},{"i":140,"t":"接下来,启动程序并在你的沙箱频道中@它试试看吧。 当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。","s":"启动","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#启动","p":126},{"i":142,"t":"前往 simbot3官网 来了解simbot3的各通用能力。 前往 API文档 或通过源码翻阅、搜索并了解具体的功能。 前往 社区 提出疑惑。 最终,本手册网站可能会时不时的更新一些实用性的应用文档。 精力有限 编写使用手册是极其消耗精力的事情。 我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署) 其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。 最终,我们才会考虑完善本手册网站。","s":"更多","u":"/docs/3.0.0.0-alpha.7/quick-start/spring-boot","h":"#更多","p":126}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/91",[0,3.721,1,3.721,2,0.198,3,3.319,4,2.585,5,2.049,6,3.721,7,2.307,8,1.488,9,2.631,10,3.064,11,4.695,12,3.721,13,3.721,14,3.064,15,3.064,16,2.631,17,2.049,18,2.049,19,0.558]],["t/93",[2,0.208,20,4.812,21,2.649]],["t/95",[2,0.188,4,2.491,22,4.524,23,4.524,24,3.725,25,3.725]],["t/97",[2,0.192]],["t/99",[2,0.204,19,0.526,26,0.841,27,3.505,28,2.478,29,3.505,30,3.505,31,0.841,32,3.505,33,2.886,34,2.478,35,2.886,36,3.505,37,3.505,38,3.505,39,3.505,40,3.505,41,2.478,42,1.402,43,3.505,44,3.505,45,3.505,46,3.505]],["t/101",[2,0.199,9,1.658,19,0.514,28,1.658,41,1.658,42,0.938,47,1.658,48,3.667,49,1.931,50,2.346,51,2.346,52,3.427,53,3.334,54,0.767,55,1.658,56,2.346,57,2.346,58,4.738,59,3.427,60,2.423,61,2.346,62,3.427,63,4.05,64,2.346,65,2.822,66,3.427,67,2.423,68,1.931,69,1.658,70,2.423,71,2.346,72,2.346,73,2.346,74,1.658,75,1.156,76,1.931,77,3.427,78,3.427,79,2.346,80,1.156,81,1.931,82,1.931,83,1.931,84,2.346,85,2.346,86,2.346,87,2.346,88,3.427,89,2.346,90,1.156,91,2.346,92,1.931,93,2.346,94,2.346,95,2.346,96,2.346,97,2.346,98,2.346,99,2.346,100,2.346,101,2.346,102,2.346]],["t/103",[2,0.151,4,2.467,19,0.672,26,1.075,103,4.482,104,3.69,105,2.779,106,4.482,107,3.69]],["t/105",[2,0.193,7,2.869,8,2.142,14,2.994,17,2.002,18,2.002,19,0.694,21,2.002,26,1.356,31,1.11,54,1.189,108,2.571,109,2.571,110,2.571,111,2.255,112,2.571,113,2.994]],["t/107",[2,0.186,8,1.76,26,1.055,31,1.055,108,3.111,109,3.111,110,3.111,111,2.728,112,3.111]],["t/109",[19,0.719,21,2.639]],["t/111",[2,0.151,7,2.779,8,1.792,17,2.467,18,2.467,19,0.672,26,1.075,31,1.075,54,1.465]],["t/113",[113,3.986]],["t/115",[2,0.193,7,2.968,8,1.915,17,2.114,18,2.114,19,0.718,21,2.114,26,1.251,31,1.148,47,2.714,54,1.705,114,3.84,115,3.84,116,2.714]],["t/117",[2,0.194,8,1.402,10,3.72,19,0.526,26,0.841,31,0.841,42,1.402,69,2.478,80,2.227,83,2.886,108,3.194,109,2.478,110,2.478,111,2.173,112,2.478,117,3.505,118,3.505,119,2.886,120,3.505,121,3.505,122,4.519,123,3.505,124,2.886,125,2.886,126,2.886,127,3.505,128,2.886,129,2.886]],["t/119",[2,0.208,8,0.882,19,0.331,26,1.037,33,3.217,35,1.816,54,1.413,80,1.614,130,2.697,131,3.276,132,3.276,133,3.276,134,2.316,135,3.057,136,2.697,137,2.697,138,3.266,139,3.217,140,3.908,141,2.206,142,1.368]],["t/121",[2,0.198,5,1.729,16,2.22,31,0.753,42,1.681,69,2.972,70,2.22,75,1.547,90,1.547,92,2.585,107,2.585,128,3.461,135,2.22,137,2.585,139,2.585,143,4.204,144,3.14,145,1.729,146,3.14,147,2.22,148,3.14,149,4.204,150,3.14,151,3.14,152,3.14,153,2.585,154,3.14,155,2.585,156,3.14,157,3.14,158,3.14,159,2.585,160,2.585,161,3.14,162,1.256,163,2.585,164,3.14,165,3.14]],["t/123",[2,0.208,16,1.802,19,0.239,26,0.611,31,0.382,41,1.802,42,1.019,49,2.098,54,1.189,55,1.802,67,1.127,70,1.127,75,1.793,105,1.58,124,2.098,135,1.802,147,1.127,162,0.637,163,2.098,166,1.594,167,1.312,168,1.594,169,2.549,170,2.098,171,3.639,172,2.549,173,2.549,174,2.549,175,3.185,176,2.549,177,2.549,178,2.549,179,3.185,180,2.098,181,2.549,182,2.098,183,2.549,184,2.098,185,2.098,186,2.549,187,2.549,188,2.549,189,2.549,190,2.098,191,2.549,192,2.549,193,1.594]],["t/125",[2,0.16,19,0.712,21,2.613]],["t/128",[2,0.206,3,2.714,4,2.114,5,2.114,15,3.161,26,0.921,116,2.714,162,1.535,194,3.84,195,3.84,196,2.714]],["t/130",[2,0.152,3,3.198,162,1.809,197,3.198,198,4.524,199,3.725,200,4.524,201,4.524]],["t/132",[2,0.209,4,1.883,26,0.344,31,0.344,42,0.573,54,1.668,67,1.013,74,1.013,75,1.152,76,1.18,80,0.706,90,0.706,104,1.18,105,0.888,134,1.013,138,3.144,142,0.888,145,0.789,162,0.935,184,1.18,197,1.013,199,1.18,202,1.013,203,1.18,204,1.433,205,1.433,206,1.433,207,1.433,208,1.433,209,1.18,210,2.339,211,1.433,212,1.433,213,1.925,214,1.433,215,1.433,216,1.18,217,1.433,218,1.18,219,1.433,220,1.433,221,1.433,222,1.433,223,1.18,224,4.043,225,4.043,226,4.043,227,4.043]],["t/134",[2,0.206,19,0.483,25,3.521,26,1.097,28,1.525,31,0.773,47,1.525,48,3.767,53,2.652,54,0.705,129,1.776,136,1.776,153,3.521,162,0.863,170,1.776,180,2.652,202,2.277,228,1.525,229,4.276,230,3.221,231,2.157,232,2.157,233,2.157,234,2.157,235,2.157,236,2.157,237,2.157,238,2.157,239,2.157,240,2.157,241,2.651,242,2.157,243,2.157,244,3.221,245,4.276,246,3.221,247,3.221,248,3.221]],["t/136",[2,0.208,19,0.429,31,0.686,34,2.022,54,0.935,75,1.409,80,1.409,90,1.409,159,2.355,162,1.578,190,2.355,216,2.355,241,1.773,249,2.861,250,2.861,251,2.355,252,2.861,253,2.861,254,2.861,255,2.355,256,2.861,257,2.355,258,2.861,259,2.861]],["t/138",[2,0.208,5,0.473,8,0.605,9,0.607,19,0.304,24,2.013,26,0.206,31,0.206,42,0.811,54,0.281,55,1.728,60,0.607,65,2.013,74,1.728,75,0.423,80,0.423,90,1.205,111,0.938,116,0.607,119,2.013,125,2.532,126,3.191,145,0.473,147,0.607,160,2.295,162,0.605,167,1.67,182,1.246,185,2.532,196,0.607,202,0.607,209,0.707,228,0.607,241,0.532,257,0.707,260,1.513,261,0.859,262,0.859,263,0.859,264,0.859,265,4.019,266,0.859,267,0.859,268,4.363,269,0.859,270,1.513,271,0.859,272,0.859,273,0.859,274,3.321,275,0.859,276,0.859,277,0.707,278,3.076,279,0.859,280,3.532,281,2.445,282,2.445,283,2.445,284,2.445,285,2.445,286,2.445,287,3.532,288,3.532,289,2.445,290,2.445,291,2.445,292,2.445,293,2.445,294,2.029,295,2.445,296,2.029,297,1.513,298,1.513,299,1.513,300,0.859,301,2.029,302,0.859,303,0.859,304,0.707,305,0.859,306,0.859]],["t/140",[2,0.126,19,0.563,31,0.899,60,2.651,82,4.25,130,3.088,142,2.325,145,2.065,213,3.088,228,2.651,241,2.325,251,3.088,255,3.088,307,3.75,308,3.75,309,3.75,310,3.75,311,3.75,312,3.75,313,3.75,314,4.718,315,3.75,316,3.75,317,3.75,318,3.088,319,3.088,320,3.75]],["t/142",[2,0.166,5,2.72,17,1.438,18,1.438,19,0.392,34,1.847,42,1.976,68,2.151,81,2.151,90,1.287,105,1.62,134,1.847,138,1.847,142,2.667,145,2.368,155,3.542,196,1.847,197,1.847,203,2.151,218,2.151,223,2.151,277,2.151,304,2.151,318,3.049,319,2.151,321,3.704,322,2.613,323,2.613,324,2.613,325,2.613,326,2.613,327,3.704,328,3.704,329,3.704,330,3.704,331,2.613,332,2.613,333,2.613,334,2.613,335,2.613,336,2.613,337,2.613,338,2.613,339,2.613,340,3.704,341,2.613,342,2.613,343,2.613,344,2.613,345,2.613,346,2.613,347,2.613,348,2.613,349,2.613,350,2.613,351,2.613,352,2.613,353,2.613,354,2.613,355,2.613,356,2.613]]],"invertedIndex":[["",{"_index":2,"t":{"91":{"position":[[5,6],[12,5],[19,4],[32,4],[42,6],[52,3],[57,4],[77,6],[101,6]]},"93":{"position":[[8,3],[12,3],[16,4],[24,9],[37,6],[44,4],[52,8],[64,4],[69,6],[76,2],[82,5],[91,4],[96,2],[99,5],[108,6],[120,10],[133,4],[140,11],[157,15],[175,5],[183,17],[203,5]]},"95":{"position":[[4,6],[11,4],[27,4]]},"97":{"position":[[0,3],[5,6],[12,2]]},"99":{"position":[[0,3],[6,9],[24,5],[41,4],[76,6],[91,9],[104,6],[111,4],[119,6],[131,8],[143,4],[148,6],[155,2],[161,5],[170,4],[175,2],[178,5]]},"101":{"position":[[9,6],[16,10],[39,4],[48,7],[56,3],[63,8],[76,6],[83,11],[114,6],[126,11],[143,15],[161,6],[170,10],[183,1],[191,15],[228,1],[268,6],[277,6],[289,3],[297,1],[326,10],[339,15],[397,1]]},"103":{"position":[[10,4]]},"105":{"position":[[6,3],[10,3],[31,4],[36,3],[66,6],[81,7],[107,10]]},"107":{"position":[[0,3],[21,4],[26,3]]},"111":{"position":[[5,7]]},"115":{"position":[[10,7],[30,4],[48,10],[65,6],[72,4],[82,6]]},"117":{"position":[[0,3],[21,4],[26,3],[40,3],[48,2],[64,3],[90,3],[98,13]]},"119":{"position":[[0,6],[7,6],[14,3],[18,6],[25,6],[32,5],[48,6],[57,6],[80,3],[84,2],[89,14],[105,4],[110,5],[116,6],[123,9],[133,6],[140,9],[150,4],[155,3],[159,1],[161,1],[163,1],[165,1],[167,5],[173,1],[190,8],[209,6],[218,6],[241,3],[245,2],[250,14],[266,4],[271,5],[277,6],[284,9],[294,6],[301,9],[311,4],[316,3],[320,1],[322,1],[324,1],[326,1],[328,5],[334,1],[350,8],[360,10],[373,7],[381,4],[386,5],[392,6],[399,9],[410,7],[425,5],[436,3],[448,3],[460,10],[471,6],[478,9],[488,4],[493,3],[498,10],[525,8],[539,7],[547,1],[549,1],[551,1],[553,1],[555,5],[561,1],[564,7],[575,10],[598,8]]},"121":{"position":[[18,3],[35,3],[44,4],[49,5],[55,6],[62,4],[67,3],[79,3],[101,3],[106,3],[136,3],[147,14],[172,3]]},"123":{"position":[[9,3],[26,6],[33,4],[47,4],[52,10],[92,5],[100,4],[105,2],[108,4],[113,4],[118,6],[125,7],[133,4],[138,3],[142,6],[151,10],[162,4],[173,6],[197,3],[207,3],[211,5],[220,5],[228,9],[238,7],[246,2],[249,3],[253,9],[263,3],[267,13],[284,3],[288,10],[309,3],[316,3],[333,3],[337,3],[343,16],[360,6],[372,7],[380,4],[388,6],[401,4],[427,3],[431,13],[447,3],[451,11],[463,6],[471,13],[486,13],[500,5],[506,7],[531,13],[545,7],[565,4],[578,4],[585,10],[606,4],[611,10],[651,5],[659,4],[664,2],[667,4],[672,4],[677,6],[684,7],[692,4],[704,4],[709,4],[720,3],[724,6],[733,12],[746,10],[757,4],[762,8],[772,6],[787,6],[797,6],[804,4],[809,8],[835,3],[845,3],[849,5],[858,5],[866,9],[876,7],[884,2],[887,3],[891,9],[901,3],[905,13],[922,3],[926,10],[948,3],[955,3],[972,3],[976,3],[982,16],[999,6],[1012,19],[1035,6],[1048,4],[1074,3],[1078,13],[1094,3],[1098,19],[1118,6],[1126,13],[1142,3],[1147,3],[1151,5],[1159,13],[1176,6],[1183,3],[1187,7],[1195,5]]},"125":{"position":[[0,4]]},"128":{"position":[[7,3],[17,7],[25,4],[30,6],[37,4],[42,7],[51,7],[61,6],[68,4],[73,7],[82,6],[89,9],[99,4],[104,4],[110,7],[118,4],[131,4]]},"130":{"position":[[15,4]]},"132":{"position":[[6,10],[26,5],[32,6],[39,2],[45,3],[70,4],[75,5],[81,6],[88,4],[93,7],[101,4],[106,6],[113,4],[118,7],[133,4],[138,5],[144,6],[151,9],[161,6],[168,9],[178,4],[183,4],[206,6],[213,4],[244,6],[251,3],[278,6],[286,7],[309,6],[316,6],[323,3],[327,6],[334,6],[341,5],[350,6],[357,4],[362,7],[370,14],[386,4],[391,5],[397,6],[404,4],[409,7],[417,4],[422,6],[429,4],[434,7],[443,14],[443,6],[450,7],[479,4],[486,14],[502,4],[507,5],[513,6],[520,9],[530,6],[537,9],[547,4],[552,4],[557,1],[559,1],[561,1],[563,1],[565,5],[571,1],[594,6],[601,4],[606,7],[614,14],[630,4],[635,5],[641,6],[648,4],[653,7],[661,4],[666,6],[673,4],[678,7],[687,14],[687,6],[694,7],[722,4],[729,14],[745,4],[750,5],[756,6],[763,9],[773,6],[780,9],[790,4],[795,4],[800,1],[802,1],[804,1],[806,1],[808,5],[814,1],[838,6],[845,4],[850,7],[863,10],[876,7],[884,4],[889,5],[895,6],[902,4],[908,7],[918,10],[929,7],[937,4],[942,6],[949,4],[954,7],[963,10],[998,7],[1008,14],[1008,6],[1015,7],[1025,7],[1036,10],[1053,4],[1065,10],[1078,7],[1086,4],[1091,5],[1097,6],[1104,9],[1115,7],[1125,10],[1136,6],[1143,9],[1153,4],[1158,4],[1164,10],[1199,7],[1207,1],[1209,1],[1211,1],[1213,1],[1215,5],[1221,1],[1224,7],[1235,10]]},"134":{"position":[[16,6],[23,4],[40,3],[49,3],[53,3],[57,4],[77,3],[84,3],[88,4],[112,3],[127,4],[147,3],[166,11],[166,7],[174,3],[179,4],[184,9],[194,6],[201,4],[206,3],[210,3],[214,4],[236,6],[243,4],[260,10],[271,4],[283,3],[303,9],[313,6],[320,4],[327,3],[349,4],[359,6],[366,3],[370,13],[384,9],[394,1],[397,9],[407,6],[414,4],[421,3],[426,6],[441,3],[461,9],[471,6],[478,4],[485,3],[507,4],[517,3],[521,13],[535,9],[549,9],[559,6],[566,4],[573,3]]},"136":{"position":[[5,6],[12,4],[38,12],[55,6],[64,6],[71,4],[76,3],[80,7],[88,3],[92,2],[96,12],[110,21],[132,5],[138,3],[142,3],[146,4],[151,6],[158,4],[164,6],[174,14],[189,3],[194,4],[201,4],[218,4],[232,12],[258,3],[263,3],[267,7],[275,3],[279,4],[285,12],[299,21],[321,6],[328,5],[334,3],[340,6],[347,6],[354,4],[359,4],[364,6],[373,4],[381,17],[399,3],[403,3],[407,5],[414,4]]},"138":{"position":[[40,19],[79,3],[85,2],[99,3],[132,3],[139,3],[151,3],[163,6],[170,4],[175,8],[184,4],[189,5],[195,4],[200,8],[209,3],[213,7],[221,8],[230,15],[246,2],[249,6],[256,4],[261,5],[267,7],[275,10],[286,11],[298,6],[305,4],[310,5],[316,7],[324,10],[335,6],[342,6],[349,4],[354,5],[360,7],[368,10],[379,8],[388,6],[395,4],[400,5],[406,6],[413,5],[419,19],[440,9],[450,5],[456,15],[475,8],[485,6],[492,5],[506,7],[516,6],[523,7],[531,5],[539,4],[547,11],[566,2],[572,2],[620,7],[628,3],[632,16],[649,5],[656,19],[709,5],[715,5],[733,3],[737,7],[745,8],[754,15],[770,4],[775,6],[782,4],[787,5],[793,7],[801,10],[812,11],[824,6],[831,4],[836,5],[842,7],[850,10],[861,6],[868,6],[875,4],[880,5],[886,7],[894,10],[905,8],[914,6],[921,4],[926,5],[932,6],[939,5],[945,19],[966,9],[976,6],[983,5],[989,15],[1008,8],[1018,6],[1025,5],[1039,7],[1050,6],[1057,7],[1065,5],[1073,4],[1081,11],[1100,2],[1106,2],[1154,6],[1161,4],[1166,16],[1183,19],[1203,5],[1245,4],[1254,3],[1258,5],[1264,13],[1291,3],[1295,7],[1303,8],[1312,15],[1328,4],[1333,6],[1340,4],[1345,5],[1351,7],[1359,10],[1370,11],[1382,6],[1389,4],[1394,5],[1400,7],[1408,10],[1419,6],[1426,6],[1433,4],[1438,5],[1444,7],[1452,10],[1463,8],[1472,6],[1479,4],[1484,5],[1490,6],[1497,5],[1503,19],[1524,9],[1534,6],[1541,5],[1547,15],[1566,8],[1576,6],[1583,5],[1597,7],[1608,6],[1615,7],[1623,5],[1631,4],[1639,11],[1658,2],[1664,2],[1712,6],[1719,17],[1740,16],[1757,19],[1777,5],[1821,17],[1845,6],[1863,6],[1870,5],[1876,10],[1939,6],[1946,10],[1992,3],[1996,7],[2004,8],[2013,15],[2029,4],[2034,6],[2041,4],[2046,5],[2052,7],[2060,10],[2071,11],[2083,6],[2090,4],[2095,5],[2101,7],[2109,10],[2120,6],[2127,6],[2134,4],[2139,5],[2145,7],[2153,10],[2164,8],[2173,6],[2180,4],[2185,5],[2191,6],[2198,5],[2204,19],[2225,9],[2235,6],[2242,5],[2248,15],[2267,8],[2277,6],[2284,5],[2298,7],[2309,6],[2316,7],[2324,5],[2332,4],[2340,11],[2359,2],[2365,2],[2413,6],[2420,4],[2428,16],[2445,19],[2465,5],[2509,4],[2526,6],[2544,6],[2551,4],[2556,19],[2576,5],[2582,10]]},"140":{"position":[[65,6]]},"142":{"position":[[3,7],[16,7],[34,3],[149,3],[172,3]]}}}],["一一列举",{"_index":148,"t":{"121":{"position":[[11,4]]}}}],["一个",{"_index":162,"t":{"121":{"position":[[126,2]]},"123":{"position":[[575,2]]},"128":{"position":[[129,2]]},"130":{"position":[[9,2]]},"132":{"position":[[4,2],[257,2]]},"134":{"position":[[34,2]]},"136":{"position":[[2,2],[25,2]]},"138":{"position":[[18,2],[27,2]]}}}],["一些",{"_index":105,"t":{"103":{"position":[[6,2]]},"123":{"position":[[321,2],[960,2]]},"132":{"position":[[224,2]]},"142":{"position":[[89,2]]}}}],["一句",{"_index":273,"t":{"138":{"position":[[91,2]]}}}],["一定",{"_index":92,"t":{"101":{"position":[[413,2]]},"121":{"position":[[118,2]]}}}],["一小部分",{"_index":165,"t":{"121":{"position":[[168,4]]}}}],["一样",{"_index":250,"t":{"136":{"position":[[19,2]]}}}],["一次",{"_index":84,"t":{"101":{"position":[[369,2]]}}}],["上限",{"_index":79,"t":{"101":{"position":[[317,2]]}}}],["下文",{"_index":139,"t":{"119":{"position":[[184,2],[344,2],[519,2]]},"121":{"position":[[163,2]]}}}],["不会",{"_index":146,"t":{"121":{"position":[[6,2]]}}}],["不要",{"_index":130,"t":{"119":{"position":[[41,2],[202,2]]},"140":{"position":[[40,2]]}}}],["两个",{"_index":208,"t":{"132":{"position":[[59,2]]}}}],["中",{"_index":19,"t":{"91":{"position":[[110,1]]},"99":{"position":[[54,1]]},"101":{"position":[[60,1],[367,1]]},"103":{"position":[[3,1]]},"105":{"position":[[58,1],[90,1]]},"109":{"position":[[2,1]]},"111":{"position":[[14,1]]},"115":{"position":[[19,1],[37,1]]},"117":{"position":[[54,1]]},"119":{"position":[[430,1]]},"123":{"position":[[569,1]]},"125":{"position":[[7,1]]},"134":{"position":[[31,1],[253,1]]},"136":{"position":[[222,1]]},"138":{"position":[[1249,1],[1933,1],[1976,1]]},"140":{"position":[[16,1]]},"142":{"position":[[211,1]]}}}],["为准",{"_index":240,"t":{"134":{"position":[[139,2]]}}}],["也好",{"_index":278,"t":{"138":{"position":[[117,2],[159,2],[723,2],[1280,2],[1889,2],[2595,2]]}}}],["了解",{"_index":321,"t":{"142":{"position":[[14,2],[51,2]]}}}],["事件",{"_index":125,"t":{"117":{"position":[[75,2]]},"138":{"position":[[29,2],[70,2],[687,2],[1220,2],[1794,2],[2482,2]]}}}],["事情",{"_index":339,"t":{"142":{"position":[[120,2]]}}}],["介绍",{"_index":15,"t":{"91":{"position":[[96,2]]},"128":{"position":[[4,2]]}}}],["代码",{"_index":262,"t":{"138":{"position":[[7,2]]}}}],["代表",{"_index":24,"t":{"95":{"position":[[19,2]]},"138":{"position":[[698,2],[1231,2],[1805,2],[2493,2]]}}}],["以及",{"_index":127,"t":{"117":{"position":[[84,2]]}}}],["会",{"_index":42,"t":{"99":{"position":[[71,1]]},"101":{"position":[[241,1]]},"117":{"position":[[55,1]]},"121":{"position":[[141,1],[165,1]]},"123":{"position":[[385,1],[1032,1]]},"132":{"position":[[269,1]]},"138":{"position":[[102,1],[1851,1],[2532,1]]},"142":{"position":[[82,1],[126,1],[177,1],[196,1],[225,1]]}}}],["住",{"_index":211,"t":{"132":{"position":[[197,1]]}}}],["作为",{"_index":111,"t":{"105":{"position":[[28,2]]},"107":{"position":[[18,2]]},"117":{"position":[[18,2]]},"138":{"position":[[1839,2],[2520,2]]}}}],["你好",{"_index":274,"t":{"138":{"position":[[94,2],[136,2],[155,2],[501,2],[1034,2],[1592,2],[2293,2]]}}}],["使用",{"_index":26,"t":{"99":{"position":[[3,2]]},"103":{"position":[[8,2]]},"105":{"position":[[4,2],[25,2],[50,2],[64,2],[94,2],[105,2]]},"107":{"position":[[15,2]]},"111":{"position":[[18,2]]},"115":{"position":[[23,2],[46,2],[80,2]]},"117":{"position":[[15,2]]},"119":{"position":[[45,2],[206,2],[431,2],[446,2]]},"123":{"position":[[79,2],[638,2]]},"128":{"position":[[13,2]]},"132":{"position":[[203,2]]},"134":{"position":[[151,2],[337,2],[345,2],[495,2],[503,2]]},"138":{"position":[[1965,2]]}}}],["使用手册",{"_index":335,"t":{"142":{"position":[[108,4]]}}}],["例",{"_index":169,"t":{"123":{"position":[[23,1],[717,1]]}}}],["例如",{"_index":215,"t":{"132":{"position":[[239,2]]}}}],["依赖",{"_index":209,"t":{"132":{"position":[[66,2]]},"138":{"position":[[1931,2]]}}}],["保持",{"_index":210,"t":{"132":{"position":[[195,2],[231,2]]}}}],["保证",{"_index":340,"t":{"142":{"position":[[129,2],[147,2]]}}}],["信息",{"_index":41,"t":{"99":{"position":[[69,2]]},"101":{"position":[[100,2]]},"123":{"position":[[190,2],[828,2]]}}}],["修改",{"_index":243,"t":{"134":{"position":[[227,2]]}}}],["借助",{"_index":204,"t":{"132":{"position":[[43,2]]}}}],["假设",{"_index":269,"t":{"138":{"position":[[74,2]]}}}],["做",{"_index":149,"t":{"121":{"position":[[21,1],[176,1]]}}}],["像",{"_index":249,"t":{"136":{"position":[[0,1]]}}}],["允许",{"_index":133,"t":{"119":{"position":[[67,2],[228,2]]}}}],["先",{"_index":114,"t":{"115":{"position":[[42,1]]}}}],["全",{"_index":117,"t":{"117":{"position":[[36,1]]}}}],["全面",{"_index":355,"t":{"142":{"position":[[204,2]]}}}],["全面性",{"_index":342,"t":{"142":{"position":[[139,3]]}}}],["其他",{"_index":47,"t":{"101":{"position":[[0,2]]},"115":{"position":[[0,2]]},"134":{"position":[[145,2]]}}}],["其次",{"_index":352,"t":{"142":{"position":[[191,2]]}}}],["具体",{"_index":325,"t":{"142":{"position":[[53,2]]}}}],["具体内容",{"_index":237,"t":{"134":{"position":[[102,4]]}}}],["内",{"_index":46,"t":{"99":{"position":[[85,1]]}}}],["内容",{"_index":306,"t":{"138":{"position":[[1988,2]]}}}],["写",{"_index":102,"t":{"101":{"position":[[448,1]]}}}],["准备",{"_index":199,"t":{"130":{"position":[[5,2]]},"132":{"position":[[2,2]]}}}],["函数",{"_index":266,"t":{"138":{"position":[[22,2]]}}}],["分钟",{"_index":73,"t":{"101":{"position":[[298,2]]}}}],["列表",{"_index":70,"t":{"101":{"position":[[255,2],[260,2]]},"121":{"position":[[132,2]]},"123":{"position":[[19,2]]}}}],["创建",{"_index":232,"t":{"134":{"position":[[32,2]]}}}],["前",{"_index":225,"t":{"132":{"position":[[468,1],[583,1],[711,1],[825,1],[985,1],[1186,1]]}}}],["前后",{"_index":287,"t":{"138":{"position":[[597,2],[615,2],[1131,2],[1149,2],[1689,2],[1707,2],[2390,2],[2408,2]]}}}],["前往",{"_index":142,"t":{"119":{"position":[[595,2]]},"132":{"position":[[23,2]]},"140":{"position":[[62,2]]},"142":{"position":[[0,2],[31,2],[60,2]]}}}],["前言",{"_index":113,"t":{"105":{"position":[[118,2]]},"113":{"position":[[0,2]]}}}],["剩余",{"_index":284,"t":{"138":{"position":[[585,2],[1119,2],[1677,2],[2378,2]]}}}],["功能",{"_index":326,"t":{"142":{"position":[[56,2]]}}}],["加入",{"_index":168,"t":{"123":{"position":[[13,2]]}}}],["包",{"_index":152,"t":{"121":{"position":[[40,1]]}}}],["包括",{"_index":121,"t":{"117":{"position":[[60,2]]}}}],["包装",{"_index":158,"t":{"121":{"position":[[109,2]]}}}],["匹配",{"_index":280,"t":{"138":{"position":[[563,2],[608,2],[1097,2],[1142,2],[1655,2],[1700,2],[2356,2],[2401,2]]}}}],["单位",{"_index":62,"t":{"101":{"position":[[221,2],[387,2]]}}}],["单独",{"_index":110,"t":{"105":{"position":[[23,2]]},"107":{"position":[[13,2]]},"117":{"position":[[13,2]]}}}],["压缩",{"_index":51,"t":{"101":{"position":[[30,2]]}}}],["参数",{"_index":55,"t":{"101":{"position":[[72,2]]},"123":{"position":[[329,2],[968,2]]},"138":{"position":[[693,2],[1226,2],[1800,2],[2488,2]]}}}],["参考",{"_index":54,"t":{"101":{"position":[[45,2]]},"105":{"position":[[79,2]]},"111":{"position":[[3,2]]},"115":{"position":[[2,2],[8,2],[43,2]]},"119":{"position":[[182,2],[342,2],[517,2],[589,2]]},"123":{"position":[[89,2],[217,2],[648,2],[855,2]]},"132":{"position":[[129,2],[191,2],[466,2],[471,2],[581,2],[586,2],[709,2],[714,2],[823,2],[828,2],[983,2],[988,2],[1184,2],[1189,2]]},"134":{"position":[[107,2]]},"136":{"position":[[253,2]]},"138":{"position":[[1972,2]]}}}],["及时",{"_index":354,"t":{"142":{"position":[[201,2]]}}}],["反馈",{"_index":314,"t":{"140":{"position":[[46,2],[72,2]]}}}],["发布",{"_index":350,"t":{"142":{"position":[[183,2]]}}}],["发送",{"_index":276,"t":{"138":{"position":[[107,2]]}}}],["变",{"_index":118,"t":{"117":{"position":[[37,1]]}}}],["变得",{"_index":316,"t":{"140":{"position":[[55,2]]}}}],["变更",{"_index":122,"t":{"117":{"position":[[62,2],[86,2]]}}}],["可以",{"_index":31,"t":{"99":{"position":[[37,2]]},"105":{"position":[[21,2],[77,2]]},"107":{"position":[[11,2]]},"111":{"position":[[1,2]]},"115":{"position":[[6,2],[40,2]]},"117":{"position":[[11,2]]},"121":{"position":[[74,2]]},"123":{"position":[[526,2]]},"132":{"position":[[19,2]]},"134":{"position":[[343,2],[501,2]]},"136":{"position":[[251,2]]},"138":{"position":[[1970,2]]},"140":{"position":[[60,2]]}}}],["可用",{"_index":201,"t":{"130":{"position":[[11,2]]}}}],["可能",{"_index":218,"t":{"132":{"position":[[267,2]]},"142":{"position":[[80,2]]}}}],["同时",{"_index":68,"t":{"101":{"position":[[239,2]]},"142":{"position":[[143,2]]}}}],["同步",{"_index":58,"t":{"101":{"position":[[103,2],[215,2],[236,2],[243,2],[362,2]]}}}],["后缀",{"_index":141,"t":{"119":{"position":[[441,2]]}}}],["后面",{"_index":178,"t":{"123":{"position":[[202,2],[840,2]]}}}],["否则",{"_index":217,"t":{"132":{"position":[[263,2]]}}}],["启动",{"_index":251,"t":{"136":{"position":[[27,2]]},"140":{"position":[[4,2]]}}}],["启用",{"_index":216,"t":{"132":{"position":[[255,2]]},"136":{"position":[[52,2]]}}}],["周期",{"_index":59,"t":{"101":{"position":[[105,2],[218,2]]}}}],["命名",{"_index":128,"t":{"117":{"position":[[94,2]]},"121":{"position":[[113,2],[143,2]]}}}],["响应",{"_index":301,"t":{"138":{"position":[[1917,2],[1978,2],[2515,2]]}}}],["哪儿",{"_index":30,"t":{"99":{"position":[[33,2]]}}}],["回复",{"_index":277,"t":{"138":{"position":[[113,2]]},"142":{"position":[[207,2]]}}}],["因为",{"_index":220,"t":{"132":{"position":[[276,2]]}}}],["固定值",{"_index":22,"t":{"95":{"position":[[0,3]]}}}],["地方",{"_index":264,"t":{"138":{"position":[[12,2]]}}}],["基于",{"_index":6,"t":{"91":{"position":[[39,2]]}}}],["基本功能",{"_index":11,"t":{"91":{"position":[[70,4],[91,4]]}}}],["处理",{"_index":299,"t":{"138":{"position":[[1859,2],[2540,2]]}}}],["处理结果",{"_index":305,"t":{"138":{"position":[[1982,4]]}}}],["外",{"_index":311,"t":{"140":{"position":[[35,1]]}}}],["多",{"_index":144,"t":{"121":{"position":[[1,1]]}}}],["大",{"_index":119,"t":{"117":{"position":[[56,1]]},"138":{"position":[[592,1],[1126,1],[1684,1],[2385,1]]}}}],["大于",{"_index":64,"t":{"101":{"position":[[226,2]]}}}],["大部分",{"_index":181,"t":{"123":{"position":[[313,3],[952,3]]}}}],["太",{"_index":143,"t":{"121":{"position":[[0,1],[27,1]]}}}],["失败",{"_index":189,"t":{"123":{"position":[[415,2],[1062,2]]}}}],["如果",{"_index":241,"t":{"134":{"position":[[142,2],[223,2],[334,2],[492,2]]},"136":{"position":[[214,2]]},"138":{"position":[[1904,2]]},"140":{"position":[[28,2]]}}}],["始终",{"_index":345,"t":{"142":{"position":[[157,2]]}}}],["子",{"_index":267,"t":{"138":{"position":[[64,1]]}}}],["字",{"_index":44,"t":{"99":{"position":[[83,1]]}}}],["存在",{"_index":160,"t":{"121":{"position":[[116,2]]},"138":{"position":[[595,2],[1129,2],[1687,2],[1936,2],[2388,2]]}}}],["完善",{"_index":356,"t":{"142":{"position":[[228,2]]}}}],["完整",{"_index":348,"t":{"142":{"position":[[167,2]]}}}],["官",{"_index":17,"t":{"91":{"position":[[107,1]]},"105":{"position":[[88,1]]},"111":{"position":[[12,1]]},"115":{"position":[[17,1]]},"142":{"position":[[10,1]]}}}],["实现",{"_index":10,"t":{"91":{"position":[[66,2]]},"117":{"position":[[72,2],[80,2]]}}}],["实用性",{"_index":333,"t":{"142":{"position":[[91,3]]}}}],["对",{"_index":9,"t":{"91":{"position":[[55,1]]},"101":{"position":[[207,1]]},"138":{"position":[[1957,1]]}}}],["对于",{"_index":12,"t":{"91":{"position":[[75,2]]}}}],["对应",{"_index":136,"t":{"119":{"position":[[73,2],[234,2]]},"134":{"position":[[153,2]]}}}],["对象",{"_index":57,"t":{"101":{"position":[[98,2]]}}}],["寻找",{"_index":157,"t":{"121":{"position":[[94,2]]}}}],["封装",{"_index":112,"t":{"105":{"position":[[41,2]]},"107":{"position":[[31,2]]},"117":{"position":[[31,2]]}}}],["将",{"_index":185,"t":{"123":{"position":[[397,1],[1044,1]]},"138":{"position":[[570,1],[1104,1],[1662,1],[1819,1],[2363,1],[2507,1]]}}}],["将要",{"_index":291,"t":{"138":{"position":[[682,2],[1215,2],[1789,2],[2477,2]]}}}],["就是",{"_index":260,"t":{"138":{"position":[[3,2],[61,2]]}}}],["尽可能",{"_index":353,"t":{"142":{"position":[[197,3]]}}}],["属性",{"_index":91,"t":{"101":{"position":[[410,2]]}}}],["工具",{"_index":205,"t":{"132":{"position":[[49,2]]}}}],["平台",{"_index":33,"t":{"99":{"position":[[48,2]]},"119":{"position":[[75,2],[236,2],[451,2]]}}}],["并且",{"_index":271,"t":{"138":{"position":[[88,2]]}}}],["库",{"_index":8,"t":{"91":{"position":[[50,1]]},"105":{"position":[[43,1],[54,1],[74,1],[98,1]]},"107":{"position":[[33,1]]},"111":{"position":[[22,1]]},"115":{"position":[[27,1],[90,1]]},"117":{"position":[[33,1]]},"119":{"position":[[453,1]]},"138":{"position":[[1915,1],[1962,1]]}}}],["应为",{"_index":236,"t":{"134":{"position":[[73,2]]}}}],["应当",{"_index":198,"t":{"130":{"position":[[3,2]]}}}],["应用",{"_index":34,"t":{"99":{"position":[[51,2]]},"136":{"position":[[17,2]]},"142":{"position":[[95,2]]}}}],["开发者",{"_index":32,"t":{"99":{"position":[[45,3]]}}}],["开头",{"_index":248,"t":{"134":{"position":[[356,2],[514,2]]}}}],["异常",{"_index":192,"t":{"123":{"position":[[423,2],[1070,2]]}}}],["式",{"_index":295,"t":{"138":{"position":[[1253,1],[1919,1],[1980,1],[2517,1]]}}}],["引入",{"_index":174,"t":{"123":{"position":[[72,2],[631,2]]}}}],["引擎",{"_index":175,"t":{"123":{"position":[[82,2],[641,2],[714,2]]}}}],["引用",{"_index":257,"t":{"136":{"position":[[228,2]]},"138":{"position":[[103,2]]}}}],["当前",{"_index":166,"t":{"123":{"position":[[4,2]]}}}],["当然",{"_index":309,"t":{"140":{"position":[[25,2]]}}}],["形式",{"_index":298,"t":{"138":{"position":[[1857,2],[2538,2]]}}}],["待",{"_index":20,"t":{"93":{"position":[[0,1],[4,1]]}}}],["必填",{"_index":23,"t":{"95":{"position":[[16,2]]}}}],["必要",{"_index":172,"t":{"123":{"position":[[65,2],[624,2]]}}}],["必须",{"_index":182,"t":{"123":{"position":[[326,2],[965,2]]},"138":{"position":[[82,2],[1934,2]]}}}],["忘记",{"_index":131,"t":{"119":{"position":[[43,2],[204,2]]}}}],["忽略",{"_index":290,"t":{"138":{"position":[[613,2],[1147,2],[1705,2],[2406,2]]}}}],["情况",{"_index":190,"t":{"123":{"position":[[418,2],[1065,2]]},"136":{"position":[[246,2]]}}}],["想要",{"_index":242,"t":{"134":{"position":[[225,2]]}}}],["慌",{"_index":312,"t":{"140":{"position":[[42,1]]}}}],["成员",{"_index":71,"t":{"101":{"position":[[258,2]]}}}],["我们",{"_index":145,"t":{"121":{"position":[[4,2]]},"132":{"position":[[61,2]]},"138":{"position":[[35,2]]},"140":{"position":[[53,2]]},"142":{"position":[[124,2],[194,2],[222,2]]}}}],["或许",{"_index":258,"t":{"136":{"position":[[249,2]]}}}],["所在",{"_index":263,"t":{"138":{"position":[[9,2]]}}}],["所有",{"_index":69,"t":{"101":{"position":[[251,2]]},"117":{"position":[[88,2]]},"121":{"position":[[15,2],[32,2]]}}}],["所述",{"_index":140,"t":{"119":{"position":[[186,2],[346,2],[521,2]]}}}],["才",{"_index":304,"t":{"138":{"position":[[1963,1]]},"142":{"position":[[224,1]]}}}],["才能",{"_index":315,"t":{"140":{"position":[[50,2]]}}}],["扩展名",{"_index":235,"t":{"134":{"position":[[70,3]]}}}],["扫描",{"_index":246,"t":{"134":{"position":[[291,2],[449,2]]}}}],["批次",{"_index":86,"t":{"101":{"position":[[375,2]]}}}],["抛出",{"_index":191,"t":{"123":{"position":[[421,2],[1068,2]]}}}],["拍",{"_index":99,"t":{"101":{"position":[[442,1]]}}}],["挂",{"_index":87,"t":{"101":{"position":[[379,1]]}}}],["接下来",{"_index":228,"t":{"134":{"position":[[0,3]]},"138":{"position":[[0,3]]},"140":{"position":[[0,3]]}}}],["接口",{"_index":123,"t":{"117":{"position":[[67,2]]}}}],["提供",{"_index":104,"t":{"103":{"position":[[4,2]]},"132":{"position":[[296,2]]}}}],["提出",{"_index":319,"t":{"140":{"position":[[80,2]]},"142":{"position":[[66,2]]}}}],["插件",{"_index":132,"t":{"119":{"position":[[64,2],[225,2]]}}}],["搜索",{"_index":324,"t":{"142":{"position":[[48,2]]}}}],["支持",{"_index":303,"t":{"138":{"position":[[1960,2]]}}}],["改",{"_index":120,"t":{"117":{"position":[[57,1]]}}}],["放在",{"_index":292,"t":{"138":{"position":[[691,2],[1224,2],[1798,2],[2486,2]]}}}],["数据",{"_index":52,"t":{"101":{"position":[[32,2],[360,2]]}}}],["整合",{"_index":43,"t":{"99":{"position":[[72,2]]}}}],["文",{"_index":226,"t":{"132":{"position":[[469,1],[584,1],[712,1],[826,1],[986,1],[1187,1]]}}}],["文件",{"_index":245,"t":{"134":{"position":[[288,2],[341,2],[446,2],[499,2]]}}}],["文件名",{"_index":233,"t":{"134":{"position":[[64,3]]}}}],["文件夹",{"_index":231,"t":{"134":{"position":[[28,3]]}}}],["文件目录",{"_index":230,"t":{"134":{"position":[[9,4],[158,4]]}}}],["文本",{"_index":285,"t":{"138":{"position":[[588,2],[1122,2],[1680,2],[2381,2]]}}}],["文档",{"_index":5,"t":{"91":{"position":[[28,2]]},"121":{"position":[[82,2]]},"128":{"position":[[2,2]]},"138":{"position":[[1974,2]]},"142":{"position":[[37,2],[97,2],[134,2],[152,2],[175,2]]}}}],["方式",{"_index":156,"t":{"121":{"position":[[91,2]]}}}],["施工",{"_index":21,"t":{"93":{"position":[[1,2],[5,2]]},"105":{"position":[[56,2]]},"109":{"position":[[0,2]]},"115":{"position":[[35,2]]},"125":{"position":[[5,2]]}}}],["无法",{"_index":256,"t":{"136":{"position":[[226,2]]}}}],["日",{"_index":36,"t":{"99":{"position":[[60,1]]}}}],["日后",{"_index":38,"t":{"99":{"position":[[63,2]]}}}],["早",{"_index":253,"t":{"136":{"position":[[209,1]]}}}],["时",{"_index":65,"t":{"101":{"position":[[229,1],[357,1]]},"138":{"position":[[568,1],[1102,1],[1660,1],[2361,1]]}}}],["时不时",{"_index":331,"t":{"142":{"position":[[83,3]]}}}],["时候",{"_index":74,"t":{"101":{"position":[[307,2]]},"132":{"position":[[219,2]]},"138":{"position":[[611,2],[1145,2],[1703,2],[2404,2]]}}}],["时间",{"_index":89,"t":{"101":{"position":[[384,2]]}}}],["是否",{"_index":50,"t":{"101":{"position":[[28,2]]}}}],["更好",{"_index":317,"t":{"140":{"position":[[57,2]]}}}],["更新",{"_index":332,"t":{"142":{"position":[[87,2]]}}}],["最终",{"_index":328,"t":{"142":{"position":[[72,2],[219,2]]}}}],["服务器",{"_index":67,"t":{"101":{"position":[[233,3],[246,3]]},"123":{"position":[[16,3]]},"132":{"position":[[259,3]]}}}],["服务器进行",{"_index":61,"t":{"101":{"position":[[210,5]]}}}],["本",{"_index":194,"t":{"128":{"position":[[0,1]]}}}],["本地",{"_index":247,"t":{"134":{"position":[[339,2],[497,2]]}}}],["本手册",{"_index":329,"t":{"142":{"position":[[75,3],[230,3]]}}}],["机器人",{"_index":3,"t":{"91":{"position":[[23,3],[61,3]]},"128":{"position":[[135,3]]},"130":{"position":[[19,3]]}}}],["权",{"_index":177,"t":{"123":{"position":[[189,1],[827,1]]}}}],["来到",{"_index":1,"t":{"91":{"position":[[2,2]]}}}],["极其",{"_index":336,"t":{"142":{"position":[[113,2]]}}}],["构建",{"_index":179,"t":{"123":{"position":[[303,2],[570,2],[942,2]]}}}],["查看",{"_index":35,"t":{"99":{"position":[[55,2]]},"119":{"position":[[607,2]]}}}],["查询",{"_index":85,"t":{"101":{"position":[[371,2]]}}}],["查阅",{"_index":154,"t":{"121":{"position":[[86,2]]}}}],["标准",{"_index":14,"t":{"91":{"position":[[88,2]]},"105":{"position":[[52,2]]}}}],["标注",{"_index":252,"t":{"136":{"position":[[34,2]]}}}],["核心",{"_index":7,"t":{"91":{"position":[[48,2]]},"105":{"position":[[72,2],[96,2]]},"111":{"position":[[20,2]]},"115":{"position":[[25,2],[88,2]]}}}],["检测",{"_index":183,"t":{"123":{"position":[[386,2],[1033,2]]}}}],["概率",{"_index":286,"t":{"138":{"position":[[593,2],[1127,2],[1685,2],[2386,2]]}}}],["模块",{"_index":108,"t":{"105":{"position":[[13,2]]},"107":{"position":[[3,2]]},"117":{"position":[[3,2],[43,2]]}}}],["模式",{"_index":27,"t":{"99":{"position":[[16,2]]}}}],["欢迎",{"_index":0,"t":{"91":{"position":[[0,2]]}}}],["此处",{"_index":147,"t":{"121":{"position":[[9,2]]},"123":{"position":[[700,2]]},"138":{"position":[[33,2]]}}}],["此时",{"_index":275,"t":{"138":{"position":[[97,2]]}}}],["此类",{"_index":39,"t":{"99":{"position":[[65,2]]}}}],["段",{"_index":45,"t":{"99":{"position":[[84,1]]}}}],["比如",{"_index":137,"t":{"119":{"position":[[78,2],[239,2]]},"121":{"position":[[124,2]]}}}],["毫秒",{"_index":63,"t":{"101":{"position":[[223,2],[283,2],[389,2]]}}}],["沙箱",{"_index":307,"t":{"140":{"position":[[12,2]]}}}],["注意",{"_index":76,"t":{"101":{"position":[[311,2]]},"132":{"position":[[199,2]]}}}],["注解",{"_index":289,"t":{"138":{"position":[[605,2],[1139,2],[1697,2],[2398,2]]}}}],["注释",{"_index":341,"t":{"142":{"position":[[136,2]]}}}],["消息",{"_index":268,"t":{"138":{"position":[[68,2],[110,2],[579,2],[590,2],[706,2],[1113,2],[1124,2],[1239,2],[1671,2],[1682,2],[1813,2],[2372,2],[2383,2],[2501,2]]}}}],["消耗",{"_index":337,"t":{"142":{"position":[[115,2]]}}}],["添加",{"_index":207,"t":{"132":{"position":[[57,2]]}}}],["源码",{"_index":155,"t":{"121":{"position":[[88,2]]},"142":{"position":[[43,2],[131,2],[162,2]]}}}],["演示",{"_index":150,"t":{"121":{"position":[[22,2]]}}}],["然后",{"_index":184,"t":{"123":{"position":[[395,2],[1042,2]]},"132":{"position":[[53,2]]}}}],["版本",{"_index":138,"t":{"119":{"position":[[180,2],[340,2],[515,2],[587,2],[592,2]]},"132":{"position":[[127,2],[189,2],[463,2],[578,2],[706,2],[820,2],[980,2],[1181,2]]},"142":{"position":[[180,2]]}}}],["特殊",{"_index":282,"t":{"138":{"position":[[577,2],[1111,2],[1669,2],[2370,2]]}}}],["独立",{"_index":109,"t":{"105":{"position":[[16,2]]},"107":{"position":[[6,2]]},"117":{"position":[[6,2]]}}}],["环境",{"_index":116,"t":{"115":{"position":[[77,2]]},"128":{"position":[[10,2]]},"138":{"position":[[1929,2]]}}}],["现实",{"_index":151,"t":{"121":{"position":[[28,2]]}}}],["生成",{"_index":347,"t":{"142":{"position":[[164,2]]}}}],["生效",{"_index":66,"t":{"101":{"position":[[230,2],[355,2]]}}}],["用于",{"_index":170,"t":{"123":{"position":[[41,2],[600,2]]},"134":{"position":[[36,2]]}}}],["用户",{"_index":167,"t":{"123":{"position":[[6,2]]},"138":{"position":[[105,2],[127,2],[146,2]]}}}],["由此",{"_index":343,"t":{"142":{"position":[[145,2]]}}}],["疑惑",{"_index":327,"t":{"142":{"position":[[68,2],[215,2]]}}}],["疑问",{"_index":320,"t":{"140":{"position":[[82,2]]}}}],["监听",{"_index":265,"t":{"138":{"position":[[20,2],[25,2],[37,2],[684,2],[700,2],[1217,2],[1233,2],[1791,2],[1807,2],[2479,2],[2495,2]]}}}],["目录",{"_index":103,"t":{"103":{"position":[[1,2]]}}}],["直接",{"_index":193,"t":{"123":{"position":[[528,2]]}}}],["相关",{"_index":81,"t":{"101":{"position":[[320,2]]},"142":{"position":[[213,2]]}}}],["相当于",{"_index":115,"t":{"115":{"position":[[60,3]]}}}],["真正",{"_index":186,"t":{"123":{"position":[[398,2],[1045,2]]}}}],["示例",{"_index":107,"t":{"103":{"position":[[19,2]]},"121":{"position":[[177,2]]}}}],["社区",{"_index":318,"t":{"140":{"position":[[77,2]]},"142":{"position":[[63,2],[209,2]]}}}],["票据",{"_index":40,"t":{"99":{"position":[[67,2]]}}}],["秒",{"_index":72,"t":{"101":{"position":[[292,1]]}}}],["积极",{"_index":313,"t":{"140":{"position":[[44,2]]}}}],["移除",{"_index":283,"t":{"138":{"position":[[581,2],[1115,2],[1673,2],[2374,2]]}}}],["程序",{"_index":213,"t":{"132":{"position":[[229,2],[265,2]]},"140":{"position":[[6,2]]}}}],["程序运行",{"_index":222,"t":{"132":{"position":[[300,4]]}}}],["程度",{"_index":93,"t":{"101":{"position":[[415,2]]}}}],["空格",{"_index":288,"t":{"138":{"position":[[599,2],[617,2],[1133,2],[1151,2],[1691,2],[1709,2],[2392,2],[2410,2]]}}}],["章节",{"_index":238,"t":{"134":{"position":[[109,2]]}}}],["第三方",{"_index":300,"t":{"138":{"position":[[1912,3]]}}}],["等",{"_index":80,"t":{"101":{"position":[[319,1]]},"117":{"position":[[82,1],[114,1]]},"119":{"position":[[86,1],[247,1]]},"132":{"position":[[48,1]]},"136":{"position":[[245,1]]},"138":{"position":[[2514,1]]}}}],["等待",{"_index":88,"t":{"101":{"position":[[381,2],[401,2]]}}}],["简单",{"_index":106,"t":{"103":{"position":[[17,2]]}}}],["篇",{"_index":259,"t":{"136":{"position":[[257,1]]}}}],["类",{"_index":159,"t":{"121":{"position":[[111,1]]},"136":{"position":[[29,1]]}}}],["类似",{"_index":279,"t":{"138":{"position":[[122,2]]}}}],["类型",{"_index":126,"t":{"117":{"position":[[77,2]]},"138":{"position":[[689,2],[703,2],[1222,2],[1236,2],[1796,2],[1810,2],[1920,2],[2484,2],[2498,2],[2518,2]]}}}],["精力",{"_index":338,"t":{"142":{"position":[[117,2]]}}}],["精力有限",{"_index":334,"t":{"142":{"position":[[101,4]]}}}],["紧随",{"_index":346,"t":{"142":{"position":[[160,2]]}}}],["组件",{"_index":4,"t":{"91":{"position":[[26,2],[36,2]]},"95":{"position":[[31,2]]},"103":{"position":[[14,2]]},"128":{"position":[[122,2]]},"132":{"position":[[236,2],[483,2],[726,2],[1057,2]]}}}],["终止",{"_index":219,"t":{"132":{"position":[[272,2]]}}}],["结构",{"_index":239,"t":{"134":{"position":[[135,2]]}}}],["结果",{"_index":124,"t":{"117":{"position":[[70,2]]},"123":{"position":[[405,2],[1052,2]]}}}],["绝大多数",{"_index":13,"t":{"91":{"position":[[83,4]]}}}],["维持",{"_index":221,"t":{"132":{"position":[[298,2]]}}}],["缓存",{"_index":56,"t":{"101":{"position":[[96,2]]}}}],["编",{"_index":195,"t":{"128":{"position":[[1,1]]}}}],["编写",{"_index":196,"t":{"128":{"position":[[127,2]]},"138":{"position":[[16,2]]},"142":{"position":[[106,2]]}}}],["网",{"_index":18,"t":{"91":{"position":[[108,1]]},"105":{"position":[[89,1]]},"111":{"position":[[13,1]]},"115":{"position":[[18,1]]},"142":{"position":[[11,1]]}}}],["网站",{"_index":330,"t":{"142":{"position":[[78,2],[233,2]]}}}],["翻阅",{"_index":323,"t":{"142":{"position":[[45,2]]}}}],["考虑",{"_index":203,"t":{"132":{"position":[[21,2]]},"142":{"position":[[226,2]]}}}],["能力",{"_index":223,"t":{"132":{"position":[[305,2]]},"142":{"position":[[27,2]]}}}],["能够",{"_index":212,"t":{"132":{"position":[[226,2]]}}}],["脑瓜儿",{"_index":100,"t":{"101":{"position":[[443,3]]}}}],["自动",{"_index":134,"t":{"119":{"position":[[69,2],[230,2]]},"132":{"position":[[270,2]]},"142":{"position":[[185,2]]}}}],["自定义",{"_index":244,"t":{"134":{"position":[[278,3],[436,3]]}}}],["自行",{"_index":173,"t":{"123":{"position":[[70,2],[629,2]]}}}],["至少",{"_index":200,"t":{"130":{"position":[[7,2]]}}}],["获取",{"_index":163,"t":{"121":{"position":[[129,2]]},"123":{"position":[[2,2],[573,2]]}}}],["要",{"_index":180,"t":{"123":{"position":[[305,1],[944,1]]},"134":{"position":[[336,1],[494,1]]}}}],["要求",{"_index":270,"t":{"138":{"position":[[77,2],[1901,2]]}}}],["规律",{"_index":161,"t":{"121":{"position":[[121,2]]}}}],["触发",{"_index":95,"t":{"101":{"position":[[420,2]]}}}],["试试看",{"_index":308,"t":{"140":{"position":[[19,3]]}}}],["说",{"_index":272,"t":{"138":{"position":[[90,1]]}}}],["说明",{"_index":344,"t":{"142":{"position":[[155,2]]}}}],["请",{"_index":224,"t":{"132":{"position":[[465,1],[580,1],[708,1],[822,1],[982,1],[1183,1]]}}}],["请求",{"_index":171,"t":{"123":{"position":[[43,2],[306,2],[602,2],[945,2]]}}}],["调用",{"_index":77,"t":{"101":{"position":[[313,2],[422,2]]}}}],["谈",{"_index":37,"t":{"99":{"position":[[61,1]]}}}],["资源",{"_index":229,"t":{"134":{"position":[[7,2],[156,2],[286,2],[444,2]]}}}],["路径",{"_index":153,"t":{"121":{"position":[[41,2]]},"134":{"position":[[123,2],[230,2],[293,2],[451,2]]}}}],["过程",{"_index":83,"t":{"101":{"position":[[365,2]]},"117":{"position":[[52,2]]}}}],["运行",{"_index":214,"t":{"132":{"position":[[233,2]]}}}],["返回",{"_index":187,"t":{"123":{"position":[[407,2],[1054,2]]}}}],["返回值",{"_index":296,"t":{"138":{"position":[[1841,3],[1906,3],[2522,3]]}}}],["这个",{"_index":281,"t":{"138":{"position":[[575,2],[1109,2],[1667,2],[2368,2]]}}}],["进行",{"_index":28,"t":{"99":{"position":[[18,2]]},"101":{"position":[[302,2]]},"134":{"position":[[254,2]]}}}],["连接",{"_index":29,"t":{"99":{"position":[[20,2]]}}}],["选",{"_index":49,"t":{"101":{"position":[[6,1]]},"123":{"position":[[324,1],[963,1]]}}}],["选择",{"_index":135,"t":{"119":{"position":[[71,2],[232,2],[444,2],[610,2]]},"121":{"position":[[166,2]]},"123":{"position":[[75,2],[634,2]]}}}],["通常",{"_index":164,"t":{"121":{"position":[[139,2]]}}}],["通用",{"_index":322,"t":{"142":{"position":[[25,2]]}}}],["通过",{"_index":90,"t":{"101":{"position":[[405,2]]},"121":{"position":[[76,2]]},"132":{"position":[[241,2]]},"136":{"position":[[32,2]]},"138":{"position":[[602,2],[1136,2],[1694,2],[2395,2]]},"142":{"position":[[41,2]]}}}],["逻辑",{"_index":261,"t":{"138":{"position":[[5,2]]}}}],["遇到",{"_index":255,"t":{"136":{"position":[[223,2]]},"140":{"position":[[30,2]]}}}],["那么",{"_index":302,"t":{"138":{"position":[[1923,2]]}}}],["部署",{"_index":351,"t":{"142":{"position":[[187,2]]}}}],["都",{"_index":16,"t":{"91":{"position":[[98,1]]},"121":{"position":[[38,1]]},"123":{"position":[[319,1],[958,1]]}}}],["配置",{"_index":48,"t":{"101":{"position":[[2,2],[107,2],[304,2],[407,2]]},"134":{"position":[[38,2],[220,2],[256,2],[281,2],[439,2]]}}}],["配置文件",{"_index":25,"t":{"95":{"position":[[22,4]]},"134":{"position":[[44,4],[97,4],[115,4],[249,4]]}}}],["里",{"_index":293,"t":{"138":{"position":[[695,1],[1228,1],[1802,1],[2490,1]]}}}],["鉴",{"_index":176,"t":{"123":{"position":[[188,1],[826,1]]}}}],["链接",{"_index":227,"t":{"132":{"position":[[473,2],[588,2],[716,2],[830,2],[990,2],[1191,2]]}}}],["问题",{"_index":82,"t":{"101":{"position":[[322,2]]},"140":{"position":[[37,2],[48,2],[74,2]]}}}],["阻塞",{"_index":294,"t":{"138":{"position":[[1251,2],[1854,2],[2535,2]]}}}],["降低",{"_index":94,"t":{"101":{"position":[[418,2]]}}}],["限制",{"_index":96,"t":{"101":{"position":[[426,2]]}}}],["随便",{"_index":101,"t":{"101":{"position":[[446,2]]}}}],["随意",{"_index":234,"t":{"134":{"position":[[67,2]]}}}],["随着",{"_index":349,"t":{"142":{"position":[[178,2]]}}}],["需要",{"_index":75,"t":{"101":{"position":[[309,2]]},"121":{"position":[[98,2]]},"123":{"position":[[68,2],[77,2],[627,2],[636,2]]},"132":{"position":[[63,2],[222,2]]},"136":{"position":[[23,2]]},"138":{"position":[[1910,2]]}}}],["非",{"_index":297,"t":{"138":{"position":[[1853,1],[2534,1]]}}}],["项目",{"_index":202,"t":{"132":{"position":[[16,2]]},"134":{"position":[[5,2],[133,2]]},"138":{"position":[[1927,2]]}}}],["预期",{"_index":310,"t":{"140":{"position":[[33,2]]}}}],["预防",{"_index":254,"t":{"136":{"position":[[211,2]]}}}],["频率",{"_index":78,"t":{"101":{"position":[[315,2],[424,2]]}}}],["频道",{"_index":60,"t":{"101":{"position":[[208,2],[253,2]]},"138":{"position":[[65,2]]},"140":{"position":[[14,2]]}}}],["额外",{"_index":206,"t":{"132":{"position":[[55,2]]}}}],["风格",{"_index":129,"t":{"117":{"position":[[112,2]]},"134":{"position":[[137,2]]}}}],["风险",{"_index":97,"t":{"101":{"position":[[429,2]]}}}],["首先",{"_index":197,"t":{"130":{"position":[[0,2]]},"132":{"position":[[0,2]]},"142":{"position":[[127,2]]}}}],["验证",{"_index":188,"t":{"123":{"position":[[413,2],[1060,2]]}}}],["默认",{"_index":53,"t":{"101":{"position":[[35,2],[264,2],[393,2]]},"134":{"position":[[299,2],[457,2]]}}}],["默认值",{"_index":98,"t":{"101":{"position":[[433,3]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file diff --git a/docs/basic/message/index.html b/docs/basic/message/index.html index 9bd0d507..33613ee8 100644 --- a/docs/basic/message/index.html +++ b/docs/basic/message/index.html @@ -4,14 +4,14 @@ 消息 | Simple Robot KOOK组件 - +
版本:3.2.0.0-alpha.8

消息

作为一个聊天软件的bot,消息的接收、处理与发送是必不可少的。在 KOOK 组件中,我们理所应当的提供了这方面的能力。

API、标准库

在 API 模块和标准库中,我们提供了针对官方API的对应实现,因此官方的API中对消息的处理是如何的,在这两个模块中就是如何。

发送消息

消息API

与消息相关的API都在包路径 love.forte.simbot.kook.api.message 中。

你可以通过下面这几个 API 来发送消息:

  • SendChannelMessageApi: 发送频道聊天消息
  • SendDirectMessageApi: 发送私信聊天消息

它们的各个参数等更详细的信息你可以在 API文档 中找到,这里就不再赘述了。 -以 SendChannelMessageApi 为例,提供简单的示例:

// 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。
// 参考:https://ktor.io/docs/http-client-engines.html
val client = HttpClient(CIO) {
// config...
}

// 鉴权信息
// 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference
val authorization = "Bot xxxxxxxxxx"

// 构建要请求的API,大部分API都有一些可选或必须的参数。
val api = SendChannelMessageApi.create(targetId = "目标ID", content = "消息内容")

// 或其他构建方式
SendChannelMessageApi.create {
content = ""
type = 9
type(SendMessageType.KMARKDOWN)
nonce = "nonce"
quote = "quote"
tempTargetId = "tempTargetId"
}

// 得到结果
val result = api.requestData(client, authorization)
println("result = $result")
println("result.nonce = ${result.nonce}")
println("result.msgId = ${result.msgId}")
println("result.msgTimestamp = ${result.msgTimestamp}")
USE BOT

在标准库中,你也可以构建一个 Bot 后直接通过 Bot 作为请求的凭证来源,而不再需要手动准备 HttpClientauthorization 了。

val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {
// 配置...
}

// 构建api...
val api = ...

// 得到结果
val result = api.requestBy(bot)

接收消息

想要接收消息,首先需要使用核心库注册并启动一个bot来订阅事件。通过订阅消息事件,我们便可以接收到消息。

val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {
// 配置...
}

bot.processor<TextEventExtra> { raw -> // this: Event<TextEventExtra>, raw: String
println("原始JSON: $raw")
println("event: $this")
println("event.extra: ${this.extra}")
println("content: ${this.content}")
}

bot.startAndJoin()

其中的 content 便是消息内容了。配合事件中其他属性便可以解析、处理消息内容了。

核心库

在核心库中,对消息的发送和接收都有着 simbot API 的风格。

消息元素

KOOK组件核心库作为 simbot 的组件库之一,自然会对标准消息元素进行部分支持并提供一些其专属的消息元素类型。首先来看看兼容的标准消息元素:

PlainText

文本消息。这无需多言,文本消息自然能够被支持。

val channel = ...

channel.send("文本消息")
channel.send("文本消息".toText())

ResourceImage & Image

图片消息。可以用来发送图片。

val channel = ...

channel.send(Path("/xx/img.jpg").toResource().toImage())

At

提及。可以通过 At 提及一个用户(默认)、一个频道或一个角色

val channel = ...

val atUser = At(123.ID)
val atChannel = At(123.ID, KookMessages.AT_TYPE_CHANNEL)
// 或:KookMessages.atChannel(123.ID)
val atRole = At(123.ID, KookMessages.AT_TYPE_ROLE)
// 或:KookMessages.atRole(123.ID)

channel.send(atUser)
channel.send(atUser + atChannel + atRole)

AtAll

提及。可以通过 AtAll 提及所有。

val channel = ...

channel.send(AtAll)

Emoji

emoji。是指 KMarkdown 中所述的 "emoji":emoji:)。

val channel = ...

channel.send(Emoji(123.ID))

除了上述一些 simbot 标准消息类型以外,KOOK组件也提供了一些专属的消息类型来满足更全面的消息发送需求。

类型

这些消息类型通常实现了 KookMessageElement 接口,并且以 Kook 作为类名前缀。

KookAssetMessage

提供一个 API 中上传得到的 Asset (附件)和它的类型并作为消息发送。

val channel = ...

// 通过API自行上传一个资源(可以用于避免不必要的多次上传)
val asset = CreateAssetApi.create(...).requestBy(...)

// 可以选择它是文件,还是图片
val imgMsg = KookAssetImage(asset)
val assetMsg = KookAsset(asset, MessageType.FILE) // 如果不是文件,你需要指定消息类型

channel.send(imgMsg)
channel.send(assetMsg)

KookKMarkdownMessage

通过 KookKMarkdownMessage 可以做到直接发送一个完全自定义的 KMarkdown 消息。

val channel = ...

// 自行构建一个 KMarkdown,并直接作为消息发送。
val kmd = KookKMarkdownMessage(buildKMarkdown {
bold("这是粗体")
newLine()
hide("隐藏")
newLine()
appendRawMd("直接拼接原始字符串,**不做解析**,_不做处理_")
// 其他...
})

channel.send(kmd)

KookCardMessage

通过 KookKMarkdownMessage 来发送 KOOK 中的 卡片消息

val channel = ...

// 构建card消息
val cardMessage = KookCardMessage(buildCardMessage {
card {
color = "..."
theme = Theme.PRIMARY
modules {
header("xxx")
// ...
}
// ...
}
})

// 也可以直接通过JSON解析
KookCardMessage(CardMessage.decode("{...}")) // card json value

channel.send(cardMessage)

KookAtAllHere

KOOK 中有一个提及所有在线用户的功能,在KMarkdown中表现为 (met)here(met)

val channel = ...

channel.send(KookAtAllHere)

KookAttachmentMessage

将消息中的多媒体消息 Attachments 作为消息元素发送的消息类型。

差异

Asset 不同,Attachments 是出现在消息中的,包括发送后或接收的消息,而 Asset 是你主动上传的资源。

val channel = ...

val attachments = ...
// 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的
val attachmentFile = KookAttachmentFile(attachments)
val attachmentImage = KookAttachmentImage(attachments)
val attachmentVideo = KookAttachmentVideo(attachments)
val attachment = KookAttachment(attachments)

channel.send(attachmentFile)
channel.send(attachmentImage)
channel.send(attachmentVideo)
channel.send(attachment)

发送消息

TODO

接收消息

TODO

- +以 SendChannelMessageApi 为例,提供简单的示例:

// 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。
// 参考:https://ktor.io/docs/http-client-engines.html
val client = HttpClient(CIO) {
// config...
}

// 鉴权信息
// 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference
val authorization = "Bot xxxxxxxxxx"

// 构建要请求的API,大部分API都有一些可选或必须的参数。
val api = SendChannelMessageApi.create(targetId = "目标ID", content = "消息内容")

// 或其他构建方式
SendChannelMessageApi.create {
content = ""
type = 9
type(SendMessageType.KMARKDOWN)
nonce = "nonce"
quote = "quote"
tempTargetId = "tempTargetId"
}

// 得到结果
val result = api.requestData(client, authorization)
println("result = $result")
println("result.nonce = ${result.nonce}")
println("result.msgId = ${result.msgId}")
println("result.msgTimestamp = ${result.msgTimestamp}")
USE BOT

在标准库中,你也可以构建一个 Bot 后直接通过 Bot 作为请求的凭证来源,而不再需要手动准备 HttpClientauthorization 了。

val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {
// 配置...
}

// 构建api...
val api = ...

// 得到结果
val result = api.requestBy(bot)

接收消息

想要接收消息,首先需要使用核心库注册并启动一个bot来订阅事件。通过订阅消息事件,我们便可以接收到消息。

val bot = BotFactory.create(Ticket.botWsTicket("CLIENT_ID", "TOKEN")) {
// 配置...
}

bot.processor<TextEventExtra> { raw -> // this: Event<TextEventExtra>, raw: String
println("原始JSON: $raw")
println("event: $this")
println("event.extra: ${this.extra}")
println("content: ${this.content}")
}

bot.startAndJoin()

其中的 content 便是消息内容了。配合事件中其他属性便可以解析、处理消息内容了。

核心库

在核心库中,对消息的发送和接收都有着 simbot API 的风格。

消息元素

KOOK组件核心库作为 simbot 的组件库之一,自然会对标准消息元素进行部分支持并提供一些其专属的消息元素类型。首先来看看兼容的标准消息元素:

PlainText

文本消息。这无需多言,文本消息自然能够被支持。

val channel = ...

channel.send("文本消息")
channel.send("文本消息".toText())

ResourceImage & Image

图片消息。可以用来发送图片。

val channel = ...

channel.send(Path("/xx/img.jpg").toResource().toImage())

At

提及。可以通过 At 提及一个用户(默认)、一个频道或一个角色

val channel = ...

val atUser = At(123.ID)
val atChannel = At(123.ID, KookMessages.AT_TYPE_CHANNEL)
// 或:KookMessages.atChannel(123.ID)
val atRole = At(123.ID, KookMessages.AT_TYPE_ROLE)
// 或:KookMessages.atRole(123.ID)

channel.send(atUser)
channel.send(atUser + atChannel + atRole)

AtAll

提及。可以通过 AtAll 提及所有。

val channel = ...

channel.send(AtAll)

Emoji

emoji。是指 KMarkdown 中所述的 "emoji":emoji:)。

val channel = ...

channel.send(Emoji(123.ID))

除了上述一些 simbot 标准消息类型以外,KOOK组件也提供了一些专属的消息类型来满足更全面的消息发送需求。

类型

这些消息类型通常实现了 KookMessageElement 接口,并且以 Kook 作为类名前缀。

KookAssetMessage

提供一个 API 中上传得到的 Asset (附件)和它的类型并作为消息发送。

val channel = ...

// 通过API自行上传一个资源(可以用于避免不必要的多次上传)
val asset = CreateAssetApi.create(...).requestBy(...)

// 可以选择它是文件,还是图片
val imgMsg = KookAssetImage(asset)
val assetMsg = KookAsset(asset, MessageType.FILE) // 如果不是文件,你需要指定消息类型

channel.send(imgMsg)
channel.send(assetMsg)

KookKMarkdownMessage

通过 KookKMarkdownMessage 可以做到直接发送一个完全自定义的 KMarkdown 消息。

val channel = ...

// 自行构建一个 KMarkdown,并直接作为消息发送。
val kmd = KookKMarkdownMessage(buildKMarkdown {
bold("这是粗体")
newLine()
hide("隐藏")
newLine()
appendRawMd("直接拼接原始字符串,**不做解析**,_不做处理_")
// 其他...
})

channel.send(kmd)

KookCardMessage

通过 KookKMarkdownMessage 来发送 KOOK 中的 卡片消息

val channel = ...

// 构建card消息
val cardMessage = KookCardMessage(buildCardMessage {
card {
color = "..."
theme = Theme.PRIMARY
modules {
header("xxx")
// ...
}
// ...
}
})

// 也可以直接通过JSON解析
KookCardMessage(CardMessage.decode("{...}")) // card json value

channel.send(cardMessage)

KookAtAllHere

KOOK 中有一个提及所有在线用户的功能,在KMarkdown中表现为 (met)here(met)

val channel = ...

channel.send(KookAtAllHere)

KookAttachmentMessage

将消息中的多媒体消息 Attachments 作为消息元素发送的消息类型。

差异

Asset 不同,Attachments 是出现在消息中的,包括发送后或接收的消息,而 Asset 是你主动上传的资源。

val channel = ...

val attachments = ...
// 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的
val attachmentFile = KookAttachmentFile(attachments)
val attachmentImage = KookAttachmentImage(attachments)
val attachmentVideo = KookAttachmentVideo(attachments)
val attachment = KookAttachment(attachments)

channel.send(attachmentFile)
channel.send(attachmentImage)
channel.send(attachmentVideo)
channel.send(attachment)

发送消息

TODO

接收消息

TODO

+ \ No newline at end of file diff --git a/docs/basic/role/index.html b/docs/basic/role/index.html index 2583c24a..6ed793f8 100644 --- a/docs/basic/role/index.html +++ b/docs/basic/role/index.html @@ -4,13 +4,13 @@ 角色操作 | Simple Robot KOOK组件 - +
-
版本:3.2.0.0-alpha.8

角色操作

TODO

- +
版本:3.2.0.0-alpha.8

角色操作

TODO

+ \ No newline at end of file diff --git a/docs/basic/unknown-event/index.html b/docs/basic/unknown-event/index.html index 4c7584c3..5d9707d8 100644 --- a/docs/basic/unknown-event/index.html +++ b/docs/basic/unknown-event/index.html @@ -4,13 +4,13 @@ 未知事件处理 | Simple Robot KOOK组件 - +
-
版本:3.2.0.0-alpha.8

未知事件处理

TODO

- +
版本:3.2.0.0-alpha.8

未知事件处理

TODO

+ \ No newline at end of file diff --git a/docs/bot-config/index.html b/docs/bot-config/index.html index 6d6ada99..e1db0815 100644 --- a/docs/bot-config/index.html +++ b/docs/bot-config/index.html @@ -4,7 +4,7 @@ BOT配置文件 | Simple Robot KOOK组件 - + @@ -16,8 +16,8 @@ 可以通过调大此参数来减缓 API 的请求速率, 默认不等待。

配置此属性可一定程度上降低触发调用频率限制的风险。


默认值的由来?

一拍脑瓜儿随便写的。

config.clientEngineConfig & config.wsEngineConfig

clientEngineConfigwsEngineConfig 两个配置项类型相同,顾名思义它们分别是针对 API clientws 场景下使用的 HttpClient 实例的引擎(通用)配置项。

它们的配置项都与 Ktor 的 HttpClientEngineConfig 的配置相同,没有额外的含义。

threadsCount

Specifies network threads count advice.

更多参考 Ktor文档

pipelining

Enables HTTP pipelining advice.

更多参考 Ktor文档

config.timeout

BOT内进行API请求时候的超时时间配置。(基于 Ktor HttpTimeout

信息

timeout 本身为null时,不会覆盖原本的默认配置。但如果 timeout 不为null,则会直接使用此对象内信息直接完整覆盖。

例如:

{
"config": {
"timeout": null
}
}

此时,connectTimeoutMillisrequestTimeoutMillis 都是默认的 5000, 而如果配置是:

{
"config": {
"timeout": {

}
}
}

则所有属性都会为 null

connectTimeoutMillis

a time period required to process an HTTP call: from sending a request to receiving a response.

更多参考 Ktor HttpTimeout

requestTimeoutMillis

a time period in which a client should establish a connection with a server.

更多参考 Ktor HttpTimeout

socketTimeoutMillis

a maximum time of inactivity between two data packets when exchanging data with a server.

更多参考 Ktor HttpTimeout

config.wsConnectTimeout

ws连接超时时间,单位 ms 。默认为 6000 毫秒。

config.isNormalEventProcessAsync

ProcessorType.NORMAL 类型的事件处理器是否在异步中执行。默认为 true。 当为 false 时, NORMAL 的表现效果将会与 PREPARE 基本类似。

备注

如果你不打算直接操作原始的 Bot 对象来注册一些原始的监听函数, -此配置项对你来说可能就没有太大的作用。

- +此配置项对你来说可能就没有太大的作用。

+ \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index f0f85c13..18bcddb6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,7 +4,7 @@ 首页 | Simple Robot KOOK组件 - + @@ -12,8 +12,8 @@
版本:3.2.0.0-alpha.8

首页

欢迎来到 Simple Robot (下文简称 simbot 的KOOK机器人组件 (下文简称 KOOK组件 文档。

KOOK组件是基于 simbot核心库KOOK机器人 的实现。

KOOK组件由Kotlin语言编写,不同的模块分别基于 KMP (Kotlin Multiplatform)Kotlin/JVM 构建。 在JVM平台上对 Java 友好,并基于 KMP 提供更多平台的可能性。

基本功能

对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。

模块简介

simbot的KOOK机器人组件整个项目分为三个主要模块。它们分别是 API模块stdlib(标准库)模块core(核心库)模块

API模块

概要

API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。

API模块的主要作用是提供针对KOOK机器人开发平台中的各API和事件类型的底层封装。此模块不提供过度的功能性封装, 主要宗旨为在风格统一的情况下将API和事件描述为可供使用的依赖库。

stdlib 标准库模块

概要

标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和 ws 事件订阅的解决方案。

标准库模块依赖API模块,在此基础上额外提供KOOK中 Bot 概念的封装与能力实现,达到对一个 Bot 的事件订阅、消息发送等能力。 -与API模块类型,标准库模块的主要宗旨同样是在风格统一的情况下将Bot与事件订阅的能力描述为可供使用的依赖库。


独立

API模块标准库模块simbot的关系主要体现在较为统一的风格上。实质上这两个模块不直接依赖与simbot相关的库。(可能存在部分仅编译依赖或编译器插件依赖)

它们两个是可以完全作为独立的底层API依赖库使用的。

core 核心库

概要

核心库模块基于 Kotlin/JVM 构建项目,支持 JVM 平台,兼容并提供友好的Java API。

核心库模块是对simbot核心库的KOOK机器人实现,也是此项目作为“simbot组件”的主要体现。

核心库模块依赖并实现 simbot API,针对其定义的各类型来提供simbot风格的 KOOK API 实现。例如实现 simbot 提供的 Bot 类型为 KookBot 并提供KOOK组件下的各种独特能力。

核心库模块是一种高级封装,它会借助 simbot API 强大的能力来提供大量高级功能,例如对事件的订阅和更便捷的消息发送、对 Spring Boot 的支持等。

核心库模块会尽可能屏蔽掉底层API(上述两个模块),使其对开发者透明,取而代之的是更加清晰明了的API。

概要

当然,对于一些特殊场景或不得已的情况,开发者依旧可以很轻松的使用底层API来达成所求目的。

- +与API模块类型,标准库模块的主要宗旨同样是在风格统一的情况下将Bot与事件订阅的能力描述为可供使用的依赖库。


独立

API模块标准库模块simbot的关系主要体现在较为统一的风格上。实质上这两个模块不直接依赖与simbot相关的库。(可能存在部分仅编译依赖或编译器插件依赖)

它们两个是可以完全作为独立的底层API依赖库使用的。

core 核心库

概要

核心库模块基于 Kotlin/JVM 构建项目,支持 JVM 平台,兼容并提供友好的Java API。

核心库模块是对simbot核心库的KOOK机器人实现,也是此项目作为“simbot组件”的主要体现。

核心库模块依赖并实现 simbot API,针对其定义的各类型来提供simbot风格的 KOOK API 实现。例如实现 simbot 提供的 Bot 类型为 KookBot 并提供KOOK组件下的各种独特能力。

核心库模块是一种高级封装,它会借助 simbot API 强大的能力来提供大量高级功能,例如对事件的订阅和更便捷的消息发送、对 Spring Boot 的支持等。

核心库模块会尽可能屏蔽掉底层API(上述两个模块),使其对开发者透明,取而代之的是更加清晰明了的API。

概要

当然,对于一些特殊场景或不得已的情况,开发者依旧可以很轻松的使用底层API来达成所求目的。

+ \ No newline at end of file diff --git a/docs/quick-start/api/index.html b/docs/quick-start/api/index.html index 6f64f07e..bfe9333e 100644 --- a/docs/quick-start/api/index.html +++ b/docs/quick-start/api/index.html @@ -4,7 +4,7 @@ 使用API | Simple Robot KOOK组件 - + @@ -13,8 +13,8 @@ 所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。

API包装类的命名也存在一定的规律,比如一个 获取xxx列表 的API通常会被命名为 GetXxxListApi。 它们的命名大部分与其对应的实际API地址有很大关系。

下文会选择一小部分API来做示例。

获取用户频道服务器列表

获取当前用户(BOT)加入的服务器列表 -为例。

// 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。
// 参考:https://ktor.io/docs/http-client-engines.html
val client = HttpClient(CIO) {
// config...
}

// 鉴权信息
// 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference
val authorization = "Bot xxxxxxxxxx"

// 构建要请求的API,大部分API都有一些可选或必须的参数。
val api = GetGuildListApi.create()

// request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常)
val guildListData: ListData<SimpleGuild> = api.requestData(client, authorization)

guildListData.items.forEach { println("guild: $it") }
// 也可以直接 guildListData.forEach { ... }
- +为例。

// 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。
// 参考:https://ktor.io/docs/http-client-engines.html
val client = HttpClient(CIO) {
// config...
}

// 鉴权信息
// 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference
val authorization = "Bot xxxxxxxxxx"

// 构建要请求的API,大部分API都有一些可选或必须的参数。
val api = GetGuildListApi.create()

// request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常)
val guildListData: ListData<SimpleGuild> = api.requestData(client, authorization)

guildListData.items.forEach { println("guild: $it") }
// 也可以直接 guildListData.forEach { ... }
+ \ No newline at end of file diff --git a/docs/quick-start/index.html b/docs/quick-start/index.html index 7be55bb2..0c8c7dbf 100644 --- a/docs/quick-start/index.html +++ b/docs/quick-start/index.html @@ -4,13 +4,13 @@ 快速开始 | Simple Robot KOOK组件 - + - + + \ No newline at end of file diff --git a/docs/quick-start/simbot-core/index.html b/docs/quick-start/simbot-core/index.html index 1f8146f1..afd794b6 100644 --- a/docs/quick-start/simbot-core/index.html +++ b/docs/quick-start/simbot-core/index.html @@ -4,13 +4,13 @@ 使用simbot核心库 | Simple Robot KOOK组件 - +
-
- +
+ \ No newline at end of file diff --git a/docs/quick-start/spring-boot/index.html b/docs/quick-start/spring-boot/index.html index 0c25f61b..17d31c53 100644 --- a/docs/quick-start/spring-boot/index.html +++ b/docs/quick-start/spring-boot/index.html @@ -4,15 +4,15 @@ 使用SpringBoot | Simple Robot KOOK组件 - +
版本:3.2.0.0-alpha.8

使用SpringBoot

前言

本编文档介绍使用:

  • simboot-core-spring-boot-starter: simbot3 的 Spring Boot Starter
  • simbot-component-kook-core: simbot3 的 KOOK 组件

来编写搭建一个基于simbot和Spring的KOOK机器人项目。

前提准备

首先你应当准备至少一个可用的 KOOK机器人

项目构建

1. 准备 Spring Boot 项目

首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。

2. 添加 simbot 依赖

然后额外添加两个我们需要的依赖:

  • love.forte.simbot.boot:simboot-core-spring-boot-starter
    (版本参考)
  • love.forte.simbot.component:simbot-component-kook-core
    (版本参考)
保持住

注意,在使用 Spring Boot 的时候你需要一些能够使程序保持运行的组件,例如通过 spring-web 启用一个服务器,否则程序可能会自动终止。 因为simbot的 starter 并不提供维持程序运行的能力。

当然,你也可以选择使用一个线程来自行实现程序保活。

// simbot core starter  
implementation("love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION") // 版本请参考前文的参考链接
// KOOK组件
implementation("love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8") // 版本可参考前文的参考链接

3. 选择并安装合适的 Ktor Client 依赖

前往 Ktor: HTTP client Engines 选择并使用一个合适的、支持 websocket 连接 的 HTTP Client 引擎。

限制条件

注意: 你需要选择一个支持HTTP 1.1WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。

各引擎实现的限制可参考 Ktor文档

例如:

CIO 引擎为例:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-cio:<合适且较新的Ktor版本>")

如果没有使用 GradleKotlin 插件,则主动分配平台后缀:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-cio-jvm:<合适且较新的Ktor版本>")

或者如果 Java 版本 >= Java11, 可以使用 Java 引擎:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-java:<合适且较新的Ktor版本>")

BOT配置

接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot.bot.json ) 。

配置文件的具体内容则参考章节 BOT配置文件

此路径以 IDEA 的项目结构风格为准,如果是其他IDE,使用对应的资源文件目录。

${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json
可配置

如果想要修改此路径,可在 Spring Boot 的配置文件中进行配置:

# 自定义配置bot资源文件的扫描路径。
# 默认为 classpath:simbot-bots/*.bot*
# 如果要使用本地文件可以使用 `file:` 开头
simbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot*

启动类

像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot

com.example.App.kt
@EnableSimbot
@SpringBootApplication
class App

fun main(vararg args: String) {
runApplication<App>(args = args)
}

监听事件

接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。

此处我们监听 ChannelMessageEvent,也就是 子频道的消息事件

假设:要求bot必须被AT,并且说一句 你好,此时bot会引用用户发送的消息并回复 你也好! ,类似于:

用户: 
@BOT 你好

BOT:
> 用户: @BOT 你好
你也好!
com.example.listener.ExampleListener.kt
import love.forte.simboot.annotation.ContentTrim
import love.forte.simboot.annotation.Filter
import love.forte.simboot.annotation.Listener
import love.forte.simbot.event.ChannelMessageEvent

@Component
class ExampleListener {

@Listener
@Filter(value = "你好", targets = Filter.Targets(atBot = true))
@ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格
suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息
event.reply("你也好!")
}
}


启动

接下来,启动程序并在你的沙箱频道中@它试试看吧。

当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。

更多

前往 simbot3官网 来了解simbot3的各通用能力

前往 API文档 或通过源码翻阅、搜索并了解具体的功能。

前往 社区 提出疑惑。

最终,本手册网站可能会时不时的更新一些实用性的应用文档。

精力有限

编写使用手册是极其消耗精力的事情。

我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署)

其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。

最终,我们才会考虑完善本手册网站。

- +你可以参考simbot文档: 响应式的处理结果

com.example.listener.ExampleListener.java
import love.forte.simboot.annotation.ContentTrim
import love.forte.simboot.annotation.Filter
import love.forte.simboot.annotation.Listener
import love.forte.simbot.event.ChannelMessageEvent

@Component
public class ExampleListener {

@Listener
@Filter(value = "你好", targets = @Filter.Targets(atBot = true))
@ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格
public Mono<?> onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息
// 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它
return Mono.fromCompletionStage(event.replyAsync("你也好!"));
}

}

启动

接下来,启动程序并在你的沙箱频道中@它试试看吧。

当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。

更多

前往 simbot3官网 来了解simbot3的各通用能力

前往 API文档 或通过源码翻阅、搜索并了解具体的功能。

前往 社区 提出疑惑。

最终,本手册网站可能会时不时的更新一些实用性的应用文档。

精力有限

编写使用手册是极其消耗精力的事情。

我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署)

其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。

最终,我们才会考虑完善本手册网站。

+ \ No newline at end of file diff --git a/docs/quick-start/stdlib/index.html b/docs/quick-start/stdlib/index.html index 254db9b6..7bcd1375 100644 --- a/docs/quick-start/stdlib/index.html +++ b/docs/quick-start/stdlib/index.html @@ -4,13 +4,13 @@ 使用标准库 | Simple Robot KOOK组件 - +
-
版本:3.2.0.0-alpha.8

使用标准库

stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。

标准库模块是独立的,实质上并不依赖 simbot API。你可以单独使用它作为 KOOK API 与事件订阅能力的底层封装库。

标准库模块依赖API模块。

安装

1. 安装 kook-stdlib 依赖

GradleKotlin 插件

// 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。
plugin {
kotlin("jvm") version "合适且较新的版本"
// 或 multiplatform, 如果你使用多平台的话
// 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀
}

依赖:

implementation("love.forte.simbot.component:simbot-component-kook-stdlib:3.2.0.0-alpha.8") // 版本参考下文所述的 Releases

2. 选择并安装合适的 Ktor Client 依赖

前往 Ktor: HTTP client Engines 选择并使用一个合适的 HTTP Client 引擎。

限制条件

注意: 你需要选择一个支持HTTP 1.1WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。

各引擎实现的限制可参考 Ktor文档

例如:

CIO 引擎为例:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-cio:<合适且较新的Ktor版本>")

或者如果 Java 版本 >= Java11, 可以使用 Java 引擎:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-java:<合适且较新的Ktor版本>")

使用

构建BOT、订阅事件

// 构建一个 bot
val bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {
// bot相关的配置, 例如:
// 配置bot进行client请求和ws连接时使用的Ktor引擎
// JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎
clientEngineFactory = CIO
wsEngineFactory = CIO

// 是否启用 compress, 默认为true
isCompress = true

// 禁用API请求时的超时配置
disableTimeout()

// 或者自定义超时配置
timeout {
requestTimeoutMillis = 5000L
connectTimeoutMillis = 5000L
}

// 以及其他...
}

// 注册事件处理器
bot.processor { raw ->
// this: Event<*>, 也就是本次接收到的事件体。
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("raw: $raw")
}

// 也可以根据事件的 extra 订阅一个具体类型的事件
bot.processor<TextExtra> { raw ->
// this: Event<TextExtra>, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("extra: $extra")
println("raw: $raw")
}

// 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件
bot.processor(Event.Type.KMARKDOWN) { raw ->
// this: Event<TextExtra>, 也就是本次接收到的事件体。this.event 与 Type 参数匹配
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("type: $type")
println("raw: $raw")
}

// 可以查询bot自身的信息
val me = bot.me()
println("me: $me")

// 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。
// bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭
// startAndJoin() 组合了 start() 和 join()
bot.startAndJoin()

一个简化版的示例:

// 构建bot
// 需要确保runtime环境中有可用的ktor引擎,且同时支持HTTP和ws client
val bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN"))

// 订阅某个具体事件
bot.processor<TextExtra> { raw ->
// this: Event<TextExtra>, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("extra: $extra")
println("raw: $raw")
}

// 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。
// bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭
// startAndJoin() 组合了 start() 和 join()
bot.startAndJoin()

使用BOT请求API

在标准库中,我们也针对 Bot 提供了一些用于请求API的便捷方法,免除你每次都需要提供 HttpClientauthorization 的问题。

获取频道服务器列表API为例:

省略配置过程,Kotlin各平台的使用方式是一致的。

// 构建bot
val bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {
// 配置过程省略
}

// 获取频道列表API
val api = GetGuildListApi.create()

// 通过 bot 请求
val dataList = api.requestBy(bot)

dataList.forEach { println("guild: $it") }
- +
版本:3.2.0.0-alpha.8

使用标准库

stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。

标准库模块是独立的,实质上并不依赖 simbot API。你可以单独使用它作为 KOOK API 与事件订阅能力的底层封装库。

标准库模块依赖API模块。

安装

1. 安装 kook-stdlib 依赖

GradleKotlin 插件

// 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。
plugin {
kotlin("jvm") version "合适且较新的版本"
// 或 multiplatform, 如果你使用多平台的话
// 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀
}

依赖:

implementation("love.forte.simbot.component:simbot-component-kook-stdlib:3.2.0.0-alpha.8") // 版本参考下文所述的 Releases

2. 选择并安装合适的 Ktor Client 依赖

前往 Ktor: HTTP client Engines 选择并使用一个合适的 HTTP Client 引擎。

限制条件

注意: 你需要选择一个支持HTTP 1.1WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。

各引擎实现的限制可参考 Ktor文档

例如:

CIO 引擎为例:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-cio:<合适且较新的Ktor版本>")

或者如果 Java 版本 >= Java11, 可以使用 Java 引擎:

// 或使用 runtimeOnly
implementation("io.ktor:ktor-client-java:<合适且较新的Ktor版本>")

使用

构建BOT、订阅事件

// 构建一个 bot
val bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {
// bot相关的配置, 例如:
// 配置bot进行client请求和ws连接时使用的Ktor引擎
// JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎
clientEngineFactory = CIO
wsEngineFactory = CIO

// 是否启用 compress, 默认为true
isCompress = true

// 禁用API请求时的超时配置
disableTimeout()

// 或者自定义超时配置
timeout {
requestTimeoutMillis = 5000L
connectTimeoutMillis = 5000L
}

// 以及其他...
}

// 注册事件处理器
bot.processor { raw ->
// this: Event<*>, 也就是本次接收到的事件体。
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("raw: $raw")
}

// 也可以根据事件的 extra 订阅一个具体类型的事件
bot.processor<TextExtra> { raw ->
// this: Event<TextExtra>, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("extra: $extra")
println("raw: $raw")
}

// 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件
bot.processor(Event.Type.KMARKDOWN) { raw ->
// this: Event<TextExtra>, 也就是本次接收到的事件体。this.event 与 Type 参数匹配
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("type: $type")
println("raw: $raw")
}

// 可以查询bot自身的信息
val me = bot.me()
println("me: $me")

// 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。
// bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭
// startAndJoin() 组合了 start() 和 join()
bot.startAndJoin()

一个简化版的示例:

// 构建bot
// 需要确保runtime环境中有可用的ktor引擎,且同时支持HTTP和ws client
val bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN"))

// 订阅某个具体事件
bot.processor<TextExtra> { raw ->
// this: Event<TextExtra>, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器
// raw: ws连接接收到的原始事件的JSON字符串
println("event: $this")
println("extra: $extra")
println("raw: $raw")
}

// 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。
// bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭
// startAndJoin() 组合了 start() 和 join()
bot.startAndJoin()

使用BOT请求API

在标准库中,我们也针对 Bot 提供了一些用于请求API的便捷方法,免除你每次都需要提供 HttpClientauthorization 的问题。

获取频道服务器列表API为例:

省略配置过程,Kotlin各平台的使用方式是一致的。

// 构建bot
val bot = BotFactory.create(Ticket.botWsTicket(clientId = "CLIENT_ID", token = "TOKEN")) {
// 配置过程省略
}

// 获取频道列表API
val api = GetGuildListApi.create()

// 通过 bot 请求
val dataList = api.requestBy(bot)

dataList.forEach { println("guild: $it") }
+ \ No newline at end of file diff --git a/index.html b/index.html index 1b3119f7..8d67a8e7 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ 欢迎! | Simple Robot KOOK组件 - +

Simple Robot KOOK组件

实现KOOK平台目标的simbot组件实现

- + \ No newline at end of file diff --git a/search-index.json b/search-index.json index 5dbc1061..0d466805 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"首页","u":"/docs/","b":["文档"]},{"i":11,"t":"未知事件处理","u":"/docs/basic/unknown-event","b":["文档","基础内容"]},{"i":13,"t":"消息","u":"/docs/basic/message","b":["文档","基础内容"]},{"i":29,"t":"角色操作","u":"/docs/basic/role","b":["文档","基础内容"]},{"i":31,"t":"BOT配置文件","u":"/docs/bot-config/","b":["文档"]},{"i":42,"t":"快速开始","u":"/docs/quick-start/","b":["文档","快速开始🚀"]},{"i":54,"t":"使用simbot核心库","u":"/docs/quick-start/simbot-core","b":["文档","快速开始🚀"]},{"i":56,"t":"使用API","u":"/docs/quick-start/api","b":["文档","快速开始🚀"]},{"i":64,"t":"使用SpringBoot","u":"/docs/quick-start/spring-boot","b":["文档","快速开始🚀"]},{"i":81,"t":"使用标准库","u":"/docs/quick-start/stdlib","b":["文档","快速开始🚀"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,2.536]],["t/11",[1,2.032,2,2.032]],["t/13",[3,2.536]],["t/29",[4,2.032,5,2.032]],["t/31",[6,0.912,7,2.032]],["t/42",[8,2.032,9,2.032]],["t/54",[6,0.652,10,0.652,11,1.454,12,1.081]],["t/56",[6,0.912,10,0.912]],["t/64",[6,0.912,10,0.912]],["t/81",[10,0.76,12,1.261,13,1.695]]],"invertedIndex":[["",{"_index":6,"t":{"31":{"position":[[0,3]]},"54":{"position":[[2,6]]},"56":{"position":[[2,3]]},"64":{"position":[[2,10]]}}}],["使用",{"_index":10,"t":{"54":{"position":[[0,2]]},"56":{"position":[[0,2]]},"64":{"position":[[0,2]]},"81":{"position":[[0,2]]}}}],["处理",{"_index":2,"t":{"11":{"position":[[4,2]]}}}],["库",{"_index":12,"t":{"54":{"position":[[10,1]]},"81":{"position":[[4,1]]}}}],["开始",{"_index":9,"t":{"42":{"position":[[2,2]]}}}],["快速",{"_index":8,"t":{"42":{"position":[[0,2]]}}}],["操作",{"_index":5,"t":{"29":{"position":[[2,2]]}}}],["未知事件",{"_index":1,"t":{"11":{"position":[[0,4]]}}}],["标准",{"_index":13,"t":{"81":{"position":[[2,2]]}}}],["核心",{"_index":11,"t":{"54":{"position":[[8,2]]}}}],["消息",{"_index":3,"t":{"13":{"position":[[0,2]]}}}],["角色",{"_index":4,"t":{"29":{"position":[[0,2]]}}}],["配置文件",{"_index":7,"t":{"31":{"position":[[3,4]]}}}],["首页",{"_index":0,"t":{"1":{"position":[[0,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"模块简介","u":"/docs/","h":"#模块简介","p":1},{"i":5,"t":"API模块","u":"/docs/","h":"#api模块","p":1},{"i":7,"t":"stdlib 标准库模块","u":"/docs/","h":"#stdlib-标准库模块","p":1},{"i":9,"t":"core 核心库","u":"/docs/","h":"#core-核心库","p":1},{"i":15,"t":"API、标准库","u":"/docs/basic/message","h":"#api标准库","p":13},{"i":17,"t":"发送消息","u":"/docs/basic/message","h":"#发送消息","p":13},{"i":19,"t":"接收消息","u":"/docs/basic/message","h":"#接收消息","p":13},{"i":21,"t":"核心库","u":"/docs/basic/message","h":"#核心库","p":13},{"i":23,"t":"消息元素","u":"/docs/basic/message","h":"#消息元素","p":13},{"i":25,"t":"发送消息","u":"/docs/basic/message","h":"#发送消息-1","p":13},{"i":27,"t":"接收消息","u":"/docs/basic/message","h":"#接收消息-1","p":13},{"i":33,"t":"示例","u":"/docs/bot-config/","h":"#示例","p":31},{"i":35,"t":"属性描述","u":"/docs/bot-config/","h":"#属性描述","p":31},{"i":36,"t":"component","u":"/docs/bot-config/","h":"#component","p":31},{"i":38,"t":"ticket","u":"/docs/bot-config/","h":"#ticket","p":31},{"i":40,"t":"config","u":"/docs/bot-config/","h":"#config","p":31},{"i":44,"t":"文档列表","u":"/docs/quick-start/","h":"#文档列表","p":42},{"i":46,"t":"📄️ 使用API","u":"/docs/quick-start/","h":"","p":42},{"i":48,"t":"📄️ 使用标准库","u":"/docs/quick-start/","h":"","p":42},{"i":50,"t":"📄️ 使用simbot核心库","u":"/docs/quick-start/","h":"","p":42},{"i":52,"t":"📄️ 使用SpringBoot","u":"/docs/quick-start/","h":"","p":42},{"i":58,"t":"安装","u":"/docs/quick-start/api","h":"#安装","p":56},{"i":60,"t":"使用","u":"/docs/quick-start/api","h":"#使用","p":56},{"i":62,"t":"获取用户频道服务器列表","u":"/docs/quick-start/api","h":"#获取用户频道服务器列表","p":56},{"i":65,"t":"前言","u":"/docs/quick-start/spring-boot","h":"#前言","p":64},{"i":67,"t":"前提准备","u":"/docs/quick-start/spring-boot","h":"#前提准备","p":64},{"i":69,"t":"项目构建","u":"/docs/quick-start/spring-boot","h":"#项目构建","p":64},{"i":71,"t":"BOT配置","u":"/docs/quick-start/spring-boot","h":"#bot配置","p":64},{"i":73,"t":"启动类","u":"/docs/quick-start/spring-boot","h":"#启动类","p":64},{"i":75,"t":"监听事件","u":"/docs/quick-start/spring-boot","h":"#监听事件","p":64},{"i":77,"t":"启动","u":"/docs/quick-start/spring-boot","h":"#启动","p":64},{"i":79,"t":"更多","u":"/docs/quick-start/spring-boot","h":"#更多","p":64},{"i":83,"t":"安装","u":"/docs/quick-start/stdlib","h":"#安装","p":81},{"i":85,"t":"使用","u":"/docs/quick-start/stdlib","h":"#使用","p":81},{"i":86,"t":"构建BOT、订阅事件","u":"/docs/quick-start/stdlib","h":"#构建bot订阅事件","p":81},{"i":88,"t":"使用BOT请求API","u":"/docs/quick-start/stdlib","h":"#使用bot请求api","p":81}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,2.41,1,3.276]],["t/5",[0,2.41,2,1.03]],["t/7",[0,1.726,2,0.738,3,1.726,4,1.273]],["t/9",[2,0.86,4,1.484,5,2.012]],["t/15",[2,0.86,3,2.012,4,1.484]],["t/17",[6,2.754,7,1.948]],["t/19",[7,1.948,8,2.754]],["t/21",[4,1.777,5,2.41]],["t/23",[7,1.948,9,3.276]],["t/25",[6,2.754,7,1.948]],["t/27",[7,1.948,8,2.754]],["t/33",[10,4.085]],["t/35",[11,3.276,12,3.276]],["t/36",[2,1.285]],["t/38",[2,1.285]],["t/40",[2,1.285]],["t/44",[13,3.276,14,2.754]],["t/46",[2,1.03,15,1.631]],["t/48",[3,2.012,4,1.484,15,1.361]],["t/50",[2,0.738,4,1.273,5,1.726,15,1.168]],["t/52",[2,1.03,15,1.631]],["t/58",[16,3.434]],["t/60",[15,2.034]],["t/62",[14,1.728,17,2.055,18,2.055,19,2.055,20,2.055]],["t/65",[21,4.085]],["t/67",[22,3.276,23,3.276]],["t/69",[24,3.276,25,2.754]],["t/71",[2,1.03,26,3.276]],["t/73",[27,2.754,28,3.276]],["t/75",[29,3.276,30,2.754]],["t/77",[27,3.434]],["t/79",[31,3.276,32,3.276]],["t/83",[16,3.434]],["t/85",[15,2.034]],["t/86",[2,0.738,25,1.973,30,1.973,33,2.347]],["t/88",[2,1.108,15,1.168,34,2.347]]],"invertedIndex":[["",{"_index":2,"t":{"5":{"position":[[0,3]]},"7":{"position":[[0,6]]},"9":{"position":[[0,4]]},"15":{"position":[[0,3]]},"36":{"position":[[0,9]]},"38":{"position":[[0,6]]},"40":{"position":[[0,6]]},"46":{"position":[[6,3]]},"50":{"position":[[6,6]]},"52":{"position":[[6,10]]},"71":{"position":[[0,3]]},"86":{"position":[[2,3]]},"88":{"position":[[2,3],[7,3]]}}}],["事件",{"_index":30,"t":{"75":{"position":[[2,2]]},"86":{"position":[[8,2]]}}}],["使用",{"_index":15,"t":{"46":{"position":[[4,2]]},"48":{"position":[[4,2]]},"50":{"position":[[4,2]]},"52":{"position":[[4,2]]},"60":{"position":[[0,2]]},"85":{"position":[[0,2]]},"88":{"position":[[0,2]]}}}],["元素",{"_index":9,"t":{"23":{"position":[[2,2]]}}}],["准备",{"_index":23,"t":{"67":{"position":[[2,2]]}}}],["列表",{"_index":14,"t":{"44":{"position":[[2,2]]},"62":{"position":[[9,2]]}}}],["前提",{"_index":22,"t":{"67":{"position":[[0,2]]}}}],["前言",{"_index":21,"t":{"65":{"position":[[0,2]]}}}],["发送",{"_index":6,"t":{"17":{"position":[[0,2]]},"25":{"position":[[0,2]]}}}],["启动",{"_index":27,"t":{"73":{"position":[[0,2]]},"77":{"position":[[0,2]]}}}],["多",{"_index":32,"t":{"79":{"position":[[1,1]]}}}],["安装",{"_index":16,"t":{"58":{"position":[[0,2]]},"83":{"position":[[0,2]]}}}],["属性",{"_index":11,"t":{"35":{"position":[[0,2]]}}}],["库",{"_index":4,"t":{"7":{"position":[[9,1]]},"9":{"position":[[7,1]]},"15":{"position":[[6,1]]},"21":{"position":[[2,1]]},"48":{"position":[[8,1]]},"50":{"position":[[14,1]]}}}],["接收",{"_index":8,"t":{"19":{"position":[[0,2]]},"27":{"position":[[0,2]]}}}],["描述",{"_index":12,"t":{"35":{"position":[[2,2]]}}}],["文档",{"_index":13,"t":{"44":{"position":[[0,2]]}}}],["更",{"_index":31,"t":{"79":{"position":[[0,1]]}}}],["服务器",{"_index":20,"t":{"62":{"position":[[6,3]]}}}],["构建",{"_index":25,"t":{"69":{"position":[[2,2]]},"86":{"position":[[0,2]]}}}],["标准",{"_index":3,"t":{"7":{"position":[[7,2]]},"15":{"position":[[4,2]]},"48":{"position":[[6,2]]}}}],["核心",{"_index":5,"t":{"9":{"position":[[5,2]]},"21":{"position":[[0,2]]},"50":{"position":[[12,2]]}}}],["模块",{"_index":0,"t":{"3":{"position":[[0,2]]},"5":{"position":[[3,2]]},"7":{"position":[[10,2]]}}}],["消息",{"_index":7,"t":{"17":{"position":[[2,2]]},"19":{"position":[[2,2]]},"23":{"position":[[0,2]]},"25":{"position":[[2,2]]},"27":{"position":[[2,2]]}}}],["用户",{"_index":18,"t":{"62":{"position":[[2,2]]}}}],["监听",{"_index":29,"t":{"75":{"position":[[0,2]]}}}],["示例",{"_index":10,"t":{"33":{"position":[[0,2]]}}}],["简介",{"_index":1,"t":{"3":{"position":[[2,2]]}}}],["类",{"_index":28,"t":{"73":{"position":[[2,1]]}}}],["获取",{"_index":17,"t":{"62":{"position":[[0,2]]}}}],["订阅",{"_index":33,"t":{"86":{"position":[[6,2]]}}}],["请求",{"_index":34,"t":{"88":{"position":[[5,2]]}}}],["配置",{"_index":26,"t":{"71":{"position":[[3,2]]}}}],["项目",{"_index":24,"t":{"69":{"position":[[0,2]]}}}],["频道",{"_index":19,"t":{"62":{"position":[[4,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"欢迎来到 Simple Robot (下文简称 simbot) 的KOOK机器人组件 (下文简称 KOOK组件) 文档。 KOOK组件是基于 simbot核心库 对 KOOK机器人 的实现。 KOOK组件由Kotlin语言编写,不同的模块分别基于 KMP (Kotlin Multiplatform) 或 Kotlin/JVM 构建。 在JVM平台上对 Java 友好,并基于 KMP 提供更多平台的可能性。 基本功能 对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。","s":"首页","u":"/docs/","h":"","p":1},{"i":4,"t":"simbot的KOOK机器人组件整个项目分为三个主要模块。它们分别是 API模块、stdlib(标准库)模块和core(核心库)模块。","s":"模块简介","u":"/docs/","h":"#模块简介","p":1},{"i":6,"t":"概要 API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。 API模块的主要作用是提供针对KOOK机器人开发平台中的各API和事件类型的底层封装。此模块不提供过度的功能性封装, 主要宗旨为在风格统一的情况下将API和事件描述为可供使用的依赖库。","s":"API模块","u":"/docs/","h":"#api模块","p":1},{"i":8,"t":"概要 标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和 ws 事件订阅的解决方案。 标准库模块依赖API模块,在此基础上额外提供KOOK中 Bot 概念的封装与能力实现,达到对一个 Bot 的事件订阅、消息发送等能力。 与API模块类型,标准库模块的主要宗旨同样是在风格统一的情况下将Bot与事件订阅的能力描述为可供使用的依赖库。 独立 API模块和标准库模块与simbot的关系主要体现在较为统一的风格上。实质上这两个模块不直接依赖与simbot相关的库。(可能存在部分仅编译依赖或编译器插件依赖) 它们两个是可以完全作为独立的底层API依赖库使用的。","s":"stdlib 标准库模块","u":"/docs/","h":"#stdlib-标准库模块","p":1},{"i":10,"t":"概要 核心库模块基于 Kotlin/JVM 构建项目,支持 JVM 平台,兼容并提供友好的Java API。 核心库模块是对simbot核心库的KOOK机器人实现,也是此项目作为“simbot组件”的主要体现。 核心库模块依赖并实现 simbot API,针对其定义的各类型来提供simbot风格的 KOOK API 实现。例如实现 simbot 提供的 Bot 类型为 KookBot 并提供KOOK组件下的各种独特能力。 核心库模块是一种高级封装,它会借助 simbot API 强大的能力来提供大量高级功能,例如对事件的订阅和更便捷的消息发送、对 Spring Boot 的支持等。 核心库模块会尽可能屏蔽掉底层API(上述两个模块),使其对开发者透明,取而代之的是更加清晰明了的API。 概要 当然,对于一些特殊场景或不得已的情况,开发者依旧可以很轻松的使用底层API来达成所求目的。","s":"core 核心库","u":"/docs/","h":"#core-核心库","p":1},{"i":12,"t":"TODO","s":"未知事件处理","u":"/docs/basic/unknown-event","h":"","p":11},{"i":14,"t":"作为一个聊天软件的bot,消息的接收、处理与发送是必不可少的。在 KOOK 组件中,我们理所应当的提供了这方面的能力。","s":"消息","u":"/docs/basic/message","h":"","p":13},{"i":16,"t":"在 API 模块和标准库中,我们提供了针对官方API的对应实现,因此官方的API中对消息的处理是如何的,在这两个模块中就是如何。","s":"API、标准库","u":"/docs/basic/message","h":"#api标准库","p":13},{"i":18,"t":"消息API 与消息相关的API都在包路径 love.forte.simbot.kook.api.message 中。 你可以通过下面这几个 API 来发送消息: SendChannelMessageApi: 发送频道聊天消息 SendDirectMessageApi: 发送私信聊天消息 它们的各个参数等更详细的信息你可以在 API文档 中找到,这里就不再赘述了。 以 SendChannelMessageApi 为例,提供简单的示例: Kotlin Java Java Async // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(CIO) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = SendChannelMessageApi.create(targetId = \"目标ID\", content = \"消息内容\") // 或其他构建方式 SendChannelMessageApi.create { content = \"\" type = 9 type(SendMessageType.KMARKDOWN) nonce = \"nonce\" quote = \"quote\" tempTargetId = \"tempTargetId\" } // 得到结果 val result = api.requestData(client, authorization) println(\"result = $result\") println(\"result.nonce = ${result.nonce}\") println(\"result.msgId = ${result.msgId}\") println(\"result.msgTimestamp = ${result.msgTimestamp}\") // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建api var api = SendChannelMessageApi.create(\"目标ID\", \"消息内容\"); // 或其他重载: SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\"); SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\", \"Quote引用ID\", \"nonce\", \"tempTargetId\"); // 或使用builder: SendChannelMessageApi.builder(\"目标ID\", \"消息内容\") .type(SendMessageType.KMARKDOWN) .content(\"content\") .quote(\"quote\") .nonce(\"nonce\") .tempTargetId(\"tempTargetId\").build(); // 请求并得到结果 var result = api.requestDataBlocking(client, authorization); System.out.println(\"result.getMsgId() = \" + result.getMsgId()); System.out.println(\"result.getNonce() = \" + result.getNonce()); System.out.println(\"result.getMsgTimestamp() = \" + result.getMsgTimestamp()); // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建api var api = SendChannelMessageApi.create(\"目标ID\", \"消息内容\"); // 或其他重载: SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\"); SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\", \"Quote引用ID\", \"nonce\", \"tempTargetId\"); // 或使用builder: SendChannelMessageApi.builder(\"目标ID\", \"消息内容\") .type(SendMessageType.KMARKDOWN) .content(\"content\") .quote(\"quote\") .nonce(\"nonce\") .tempTargetId(\"tempTargetId\").build(); // 请求并得到结果 api.requestDataAsync(client, authorization).thenAccept(result -> { // 发送后的结果 System.out.println(\"result = \" + result); System.out.println(\"result.getMsgId() = \" + result.getMsgId()); System.out.println(\"result.getNonce() = \" + result.getNonce()); System.out.println(\"result.getMsgTimestamp() = \" + result.getMsgTimestamp()); }); USE BOT 在标准库中,你也可以构建一个 Bot 后直接通过 Bot 作为请求的凭证来源,而不再需要手动准备 HttpClient 和 authorization 了。 Kotlin Java Java Async val bot = BotFactory.create(Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\")) { // 配置... } // 构建api... val api = ... // 得到结果 val result = api.requestBy(bot) // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); // 构建api... var api = ... // 请求并得到结果 var result = api.requestByBlocking(bot); // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); // 构建api... var api = ... // 请求并得到结果 api.requestByAsync(bot).thenAccept(result -> { // ... });","s":"发送消息","u":"/docs/basic/message","h":"#发送消息","p":13},{"i":20,"t":"想要接收消息,首先需要使用核心库注册并启动一个bot来订阅事件。通过订阅消息事件,我们便可以接收到消息。 Kotlin Java Java Async val bot = BotFactory.create(Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\")) { // 配置... } bot.processor { raw -> // this: Event, raw: String println(\"原始JSON: $raw\") println(\"event: $this\") println(\"event.extra: ${this.extra}\") println(\"content: ${this.content}\") } bot.startAndJoin() // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); bot.blockingProcessor(TextEventExtra.class, (event, raw) -> { System.out.println(\"raw = \" + raw); System.out.println(\"event = \" + event); System.out.println(\"event.extra = \" + event.getExtra()); System.out.println(\"content = \" + event.getContent()); }); bot.startBlocking(); bot.joinBlocking(); // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); bot.asyncProcessor(TextEventExtra.class, (event, raw) -> { System.out.println(\"raw = \" + raw); System.out.println(\"event = \" + event); System.out.println(\"event.extra = \" + event.getExtra()); System.out.println(\"content = \" + event.getContent()); return CompletableFuture.completedFuture(null); }); bot.startAsync().join(); 其中的 content 便是消息内容了。配合事件中其他属性便可以解析、处理消息内容了。","s":"接收消息","u":"/docs/basic/message","h":"#接收消息","p":13},{"i":22,"t":"在核心库中,对消息的发送和接收都有着 simbot API 的风格。","s":"核心库","u":"/docs/basic/message","h":"#核心库","p":13},{"i":24,"t":"KOOK组件核心库作为 simbot 的组件库之一,自然会对标准消息元素进行部分支持并提供一些其专属的消息元素类型。首先来看看兼容的标准消息元素: PlainText​ 文本消息。这无需多言,文本消息自然能够被支持。 Kotlin Java Java Async val channel = ... channel.send(\"文本消息\") channel.send(\"文本消息\".toText()) var channel = ... channel.sendBlocking(\"文本消息\"); channel.sendBlocking(Text.of(\"文本消息\")); var channel = ... channel.sendAsync(\"文本消息\"); channel.sendAsync(Text.of(\"文本消息\")); ResourceImage & Image​ 图片消息。可以用来发送图片。 Kotlin Java Java Async val channel = ... channel.send(Path(\"/xx/img.jpg\").toResource().toImage()) var channel = ... var path = Paths.get(\"/xx/img.jpg\"); var resource = Resource.of(path); var resourceImage = Image.of(resource); channel.sendAsync(resourceImage); var channel = ... var path = Paths.get(\"/xx/img.jpg\"); var resource = Resource.of(path); var resourceImage = Image.of(resource); channel.sendAsync(resourceImage); At​ 提及。可以通过 At 提及一个用户(默认)、一个频道或一个角色。 Kotlin Java Java Async val channel = ... val atUser = At(123.ID) val atChannel = At(123.ID, KookMessages.AT_TYPE_CHANNEL) // 或:KookMessages.atChannel(123.ID) val atRole = At(123.ID, KookMessages.AT_TYPE_ROLE) // 或:KookMessages.atRole(123.ID) channel.send(atUser) channel.send(atUser + atChannel + atRole) var channel = ... var atUser = new At(Identifies.ID(123)); var atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL); // 或:KookMessages.atChannel(Identifies.ID(123)); var atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE); // 或:KookMessages.atRole(Identifies.ID(123)); channel.sendBlocking(atUser); channel.sendBlocking(Messages.toMessages(atUser, atChannel, atRole)); var channel = ... var atUser = new At(Identifies.ID(123)); var atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL); // 或:KookMessages.atChannel(Identifies.ID(123)); var atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE); // 或:KookMessages.atRole(Identifies.ID(123)); channel.sendAsync(atUser); channel.sendAsync(Messages.toMessages(atUser, atChannel, atRole)); AtAll​ 提及。可以通过 AtAll 提及所有。 Kotlin Java Java Async val channel = ... channel.send(AtAll) var channel = ... channel.sendBlocking(AtAll.INSTANCE); var channel = ... channel.sendAsync(AtAll.INSTANCE); Emoji​ emoji。是指 KMarkdown 中所述的 \"emoji\" (:emoji:)。 Kotlin Java Java Async val channel = ... channel.send(Emoji(123.ID)) var channel = ... channel.sendBlocking(new Emoji(Identifies.ID(123))); var channel = ... channel.sendAsync(new Emoji(Identifies.ID(123))); 除了上述一些 simbot 标准消息类型以外,KOOK组件也提供了一些专属的消息类型来满足更全面的消息发送需求。 类型 这些消息类型通常实现了 KookMessageElement 接口,并且以 Kook 作为类名前缀。 KookAssetMessage​ 提供一个 API 中上传得到的 Asset (附件)和它的类型并作为消息发送。 Kotlin Java Java Async val channel = ... // 通过API自行上传一个资源(可以用于避免不必要的多次上传) val asset = CreateAssetApi.create(...).requestBy(...) // 可以选择它是文件,还是图片 val imgMsg = KookAssetImage(asset) val assetMsg = KookAsset(asset, MessageType.FILE) // 如果不是文件,你需要指定消息类型 channel.send(imgMsg) channel.send(assetMsg) var channel = ... // 通过API自行上传一个资源(可以用于避免不必要的多次上传) var asset = CreateAssetApi.create(...).requestByBlocking(...); // 可以选择它是文件,还是图片 var imgMsg = new KookAssetImage(asset); var assetMsg = new KookAsset(asset, MessageType.FILE); // 如果不是文件,你需要指定消息类型 channel.sendBlocking(imgMsg); channel.sendBlocking(assetMsg); var channel = ... // 通过API自行上传一个资源(可以用于避免不必要的多次上传) CreateAssetApi.create(...).requestByAsync(...).thenAccept(asset -> { // 可以选择它是文件,还是图片 var imgMsg = new KookAssetImage(asset); var assetMsg = new KookAsset(asset, MessageType.FILE); // 如果不是文件,你需要指定消息类型 channel.sendAsync(imgMsg); channel.sendAsync(assetMsg); }); KookKMarkdownMessage​ 通过 KookKMarkdownMessage 可以做到直接发送一个完全自定义的 KMarkdown 消息。 Kotlin Java Java Async val channel = ... // 自行构建一个 KMarkdown,并直接作为消息发送。 val kmd = KookKMarkdownMessage(buildKMarkdown { bold(\"这是粗体\") newLine() hide(\"隐藏\") newLine() appendRawMd(\"直接拼接原始字符串,**不做解析**,_不做处理_\") // 其他... }) channel.send(kmd) var channel = ... // 构建KMarkdown var builder = new KMarkdownBuilder(); builder.bold(\"加粗\").newLine(); builder.hide(\"隐藏\").newLine(); builder.appendRawMd(\"原始的文本,**不做处理**,_直接拼接_\"); var kMarkdown = builder.build(); channel.sendBlocking(new KookKMarkdownMessage(kMarkdown)); var channel = ... // 构建KMarkdown var builder = new KMarkdownBuilder(); builder.bold(\"加粗\").newLine(); builder.hide(\"隐藏\").newLine(); builder.appendRawMd(\"原始的文本,**不做处理**,_直接拼接_\"); var kMarkdown = builder.build(); channel.sendAsync(new KookKMarkdownMessage(kMarkdown)); KookCardMessage​ 通过 KookKMarkdownMessage 来发送 KOOK 中的 卡片消息。 Kotlin Java Java Async val channel = ... // 构建card消息 val cardMessage = KookCardMessage(buildCardMessage { card { color = \"...\" theme = Theme.PRIMARY modules { header(\"xxx\") // ... } // ... } }) // 也可以直接通过JSON解析 KookCardMessage(CardMessage.decode(\"{...}\")) // card json value channel.send(cardMessage) var channel = ... // 通过解析卡片消息JSON得到消息对象 var cardMsg = new KookCardMessage(CardMessage.decode(\"{...}\")); channel.sendBlocking(cardMsg); var channel = ... // 通过解析卡片消息JSON得到消息对象 var cardMsg = new KookCardMessage(CardMessage.decode(\"{...}\")); channel.sendAsync(cardMsg); KookAtAllHere​ KOOK 中有一个提及所有在线用户的功能,在KMarkdown中表现为 (met)here(met)。 Kotlin Java Java Async val channel = ... channel.send(KookAtAllHere) var channel = ... channel.sendBlocking(KookAtAllHere.INSTANCE); var channel = ... channel.sendAsync(KookAtAllHere.INSTANCE); KookAttachmentMessage​ 将消息中的多媒体消息 Attachments 作为消息元素发送的消息类型。 差异 与 Asset 不同,Attachments 是出现在消息中的,包括发送后或接收的消息,而 Asset 是你主动上传的资源。 Kotlin Java Java Async val channel = ... val attachments = ... // 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的 val attachmentFile = KookAttachmentFile(attachments) val attachmentImage = KookAttachmentImage(attachments) val attachmentVideo = KookAttachmentVideo(attachments) val attachment = KookAttachment(attachments) channel.send(attachmentFile) channel.send(attachmentImage) channel.send(attachmentVideo) channel.send(attachment) var channel = ... var attachments = ...; // 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的 var attachmentFile = new KookAttachmentFile(attachments); var attachmentImage = new KookAttachmentImage(attachments); var attachmentVideo = new KookAttachmentVideo(attachments); var attachment = new KookAttachment(attachments); channel.sendBlocking(attachmentFile); channel.sendBlocking(attachmentImage); channel.sendBlocking(attachmentVideo); channel.sendBlocking(attachment); var channel = ... var attachments = ...; // 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的 var attachmentFile = new KookAttachmentFile(attachments); var attachmentImage = new KookAttachmentImage(attachments); var attachmentVideo = new KookAttachmentVideo(attachments); var attachment = new KookAttachment(attachments); channel.sendAsync(attachmentFile); channel.sendAsync(attachmentImage); channel.sendAsync(attachmentVideo); channel.sendAsync(attachment);","s":"消息元素","u":"/docs/basic/message","h":"#消息元素","p":13},{"i":26,"t":"TODO","s":"发送消息","u":"/docs/basic/message","h":"#发送消息-1","p":13},{"i":28,"t":"TODO","s":"接收消息","u":"/docs/basic/message","h":"#接收消息-1","p":13},{"i":30,"t":"TODO","s":"角色操作","u":"/docs/basic/role","h":"","p":29},{"i":32,"t":"本章节会提供 bot 的配置文件中各属性的含义以及示例。 场景 bot 的配置文件通常应用于多组件应用或 Spring Boot 项目中。 对于使用Kotlin、不使用SpringBoot的开发者,也可以选择直接使用代码的形式进行配置。","s":"BOT配置文件","u":"/docs/bot-config/","h":"","p":31},{"i":34,"t":"完整示例: xxx.bot.json { \"component\": \"simbot.kook\", \"ticket\": { \"clientId\": \"Your client ID\", \"token\": \"Your ws token\" }, \"config\": { \"isCompress\": true, \"syncPeriods\": { \"guild\": { \"syncPeriod\": 180000, \"batchDelay\": 0 }, \"clientEngineConfig\": { \"threadsCount\": null, \"pipelining\": null }, \"wsEngineConfig\": { \"threadsCount\": null, \"pipelining\": null }, \"timeout\": { \"connectTimeoutMillis\": 5000, \"requestTimeoutMillis\": 5000, \"socketTimeoutMillis\": null }, \"wsConnectTimeout\": null, \"isNormalEventProcessAsync\": null } } } 最简示例: xxx.bot.json { \"component\": \"simbot.kook\", \"ticket\": { \"clientId\": \"Your client ID\", \"token\": \"Your ws token\" } }","s":"示例","u":"/docs/bot-config/","h":"#示例","p":31},{"i":37,"t":"固定值 simbot.kook,必填,代表此配置文件为KOOK组件的。","s":"component","u":"/docs/bot-config/","h":"#component","p":31},{"i":39,"t":"对 bot 身份进行校验、访问 KOOK API 以及连接KOOK服务器进行事件订阅时所需的 bot 票据信息。 在哪儿? 可以在 KOOK开发者平台-应用 中查看。 ticket.clientId​ BOT的 Client ID。 ticket.token​ BOT使用 websocket 模式进行连接的 token .","s":"ticket","u":"/docs/bot-config/","h":"#ticket","p":31},{"i":41,"t":"其他配置,可选。 config.isCompress​ 是否压缩数据。默认为 true。 参考 Gateway API 中的 compress 参数。 config.syncPeriods​ 缓存对象信息的同步周期配置。 { \"config\": { \"syncPeriods\": { \"guild\": { \"syncPeriod\": 180000, \"batchDelay\": 0 } } } } 试着关闭它! 从 v3.2.0.0-alpha.8 重构之后,数据的同步机制比之前的版本而言更加稳定。 如果你有兴趣,可以尝试直接禁用定时同步来观察数据是否会出现差错。 { \"config\": { \"syncPeriods\": { \"guild\": { \"syncPeriod\": 0, \"batchDelay\": 0 } } } } 将 syncPeriod 设置为 0 即可关闭 在预期中,仅通过事件的通知就应满足对内部缓存的同步更新。因此我们希望可以在完全禁用定时同步的情况下依旧可以保证缓存数据的准确性。 但是目前测试或反馈的数据仍然不足,我们无法完全预判禁用定时同步可能造成的后果或如果因此而产生缓存数据不准确的可能原因。 因此我们希望你在可控范围内更多的尝试禁用定时同步并在出现问题时及时反馈, 这可以帮助我们完善内部的缓存机制。 感谢您的支持与贡献! syncPeriods.guild​ 对频道服务器进行同步的周期信息配置,单位毫秒。 syncPeriods.guild.syncPeriod​ 对频道服务器进行同步的周期,单位毫秒,大于0时有效。目前服务器同步的同时会去同步此服务器下的所有频道列表与成员列表。 默认为 180000,即 180000毫秒 -> 180秒 -> 3分钟。 进行配置的时候需要注意考虑调用频率上限等相关问题。 syncPeriods.guild.batchDelay​ 同步数据是分页分批次的同步。batchDelay 配置每批次后进行挂起等待的时间,单位毫秒。 可以通过调大此参数来减缓 API 的请求速率, 默认不等待。 配置此属性可一定程度上降低触发调用频率限制的风险。 默认值的由来? 一拍脑瓜儿随便写的。 config.clientEngineConfig & config.wsEngineConfig​ clientEngineConfig 和 wsEngineConfig 两个配置项类型相同,顾名思义它们分别是针对 API client 和 ws 场景下使用的 HttpClient 实例的引擎(通用)配置项。 它们的配置项都与 Ktor 的 HttpClientEngineConfig 的配置相同,没有额外的含义。 threadsCount​ Specifies network threads count advice. 更多参考 Ktor文档 pipelining​ Enables HTTP pipelining advice. 更多参考 Ktor文档 config.timeout​ BOT内进行API请求时候的超时时间配置。(基于 Ktor HttpTimeout) 信息 当 timeout 本身为null时,不会覆盖原本的默认配置。但如果 timeout 不为null,则会直接使用此对象内信息直接完整覆盖。 例如: { \"config\": { \"timeout\": null } } 此时,connectTimeoutMillis 和 requestTimeoutMillis 都是默认的 5000, 而如果配置是: { \"config\": { \"timeout\": { } } } 则所有属性都会为 null。 connectTimeoutMillis​ a time period required to process an HTTP call: from sending a request to receiving a response. 更多参考 Ktor HttpTimeout requestTimeoutMillis​ a time period in which a client should establish a connection with a server. 更多参考 Ktor HttpTimeout socketTimeoutMillis​ a maximum time of inactivity between two data packets when exchanging data with a server. 更多参考 Ktor HttpTimeout config.wsConnectTimeout​ ws连接超时时间,单位 ms 。默认为 6000 毫秒。 config.isNormalEventProcessAsync​ ProcessorType.NORMAL 类型的事件处理器是否在异步中执行。默认为 true。 当为 false 时, NORMAL 的表现效果将会与 PREPARE 基本类似。 备注 如果你不打算直接操作原始的 Bot 对象来注册一些原始的监听函数, 此配置项对你来说可能就没有太大的作用。","s":"config","u":"/docs/bot-config/","h":"#config","p":31},{"i":43,"t":"此目录中提供一些使用KOOK组件的简单示例。","s":"快速开始","u":"/docs/quick-start/","h":"","p":42},{"i":45,"t":"📄️ 使用API API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。 📄️ 使用标准库 stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。 📄️ 使用simbot核心库 施工中 📄️ 使用SpringBoot 前言","s":"文档列表","u":"/docs/quick-start/","h":"#文档列表","p":42},{"i":47,"t":"API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。","s":"📄️ 使用API","u":"/docs/quick-start/","h":"","p":42},{"i":49,"t":"stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。","s":"📄️ 使用标准库","u":"/docs/quick-start/","h":"","p":42},{"i":51,"t":"施工中","s":"📄️ 使用simbot核心库","u":"/docs/quick-start/","h":"","p":42},{"i":53,"t":"前言","s":"📄️ 使用SpringBoot","u":"/docs/quick-start/","h":"","p":42},{"i":55,"t":"TODO 施工中 你可以先参考 使用SpringBoot,它相当于在 Spring Boot 环境下使用simbot核心库。 其他参考 你也可以参考simbot3官网中的 《使用核心库》","s":"使用simbot核心库","u":"/docs/quick-start/simbot-core","h":"","p":54},{"i":57,"t":"API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。 API模块是独立的,实质上并不依赖 simbot API。你可以单独使用它作为 KOOK API 的底层封装库。","s":"使用API","u":"/docs/quick-start/api","h":"","p":56},{"i":59,"t":"1. 安装 kook-api 依赖 Gradle Kotlin DSL Gradle Groovy Maven Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { kotlin(\"jvm\") version \"合适且较新的版本\" // 或 multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation(\"love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8\") // 版本参考下文所述的 Releases Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { id 'org.jetbrains.kotlin.jvm' version '合适且较新的版本' // 或 org.jetbrains.kotlin.multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation 'love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8' // 版本参考下文所述的 Releases love.forte.simbot.component simbot-component-kook-api-jvm 3.2.0.0-alpha.8 版本参考 版本可前往 Releases 查看并选择。 2. 选择并安装合适的 Ktor Client 依赖 前往 Ktor: HTTP client Engines 选择并使用一个合适的 HTTP Client 引擎。 例如: Kotlin/JVM Kotlin/JS Kotlin/Native Maven 以 CIO 引擎为例: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 或者如果 Java 版本 >= Java11, 使用 Java 引擎: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-java:<合适且较新的Ktor版本>\") 以 JS 引擎为例: implementation(\"io.ktor:ktor-client-js:<合适且较新的Ktor版本>\") WinHttp Darwin Curl see WinHttp implementation(\"io.ktor:ktor-client-winhttp:<合适且较新的Ktor版本>\") see Darwin implementation(\"io.ktor:ktor-client-darwin:<合适且较新的Ktor版本>\") see Curl implementation(\"io.ktor:ktor-client-curl:<合适且较新的Ktor版本>\") 以 CIO 引擎为例: io.ktor ktor-client-cio-jvm 合适且较新的Ktor版本 runtime 或者如果 Java 版本 >= Java11, 使用 Java 引擎: io.ktor ktor-client-java 合适且较新的Ktor版本 runtime ","s":"安装","u":"/docs/quick-start/api","h":"#安装","p":56},{"i":61,"t":"太多了 我们不会在此处一一列举所有的API做演示,这不太现实。 所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。 API包装类的命名也存在一定的规律,比如一个 获取xxx列表 的API通常会被命名为 GetXxxListApi。 它们的命名大部分与其对应的实际API地址有很大关系。 下文会选择一小部分API来做示例。","s":"使用","u":"/docs/quick-start/api","h":"#使用","p":56},{"i":63,"t":"以 获取当前用户(BOT)加入的服务器列表 为例。 Kotlin/JVM Kotlin/JS Kotlin/Native Java Java Async // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(CIO) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GetGuildListApi.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData: ListData = api.requestData(client, authorization) guildListData.items.forEach { println(\"guild: $it\") } // 也可以直接 guildListData.forEach { ... } // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(Js) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GetGuildListApi.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData: ListData = api.requestData(client, authorization) guildListData.items.forEach { println(\"guild: $it\") } // 也可以直接 guildListData.forEach { ... } 此处以 MingwX64 平台环境为例: // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(WinHttp) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GetGuildListApi.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData: ListData = api.requestData(client, authorization) guildListData.items.forEach { println(\"guild: $it\") } // 也可以直接 guildListData.forEach { ... } // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建要请求的API,大部分API都有一些可选或必须的参数。 var api = GetGuildListApi.create(); // requestDataBlocking 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) var guildListData = api.requestDataBlocking(client, authorization); for (var guild : guildListData) { System.out.println(guild); } // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建要请求的API,大部分API都有一些可选或必须的参数。 var api = GetGuildListApi.create(); // requestDataAsync 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) CompletableFuture> guildListDataFuture = api.requestDataAsync(client, authorization); // Use the future, or handle exception guildListDataFuture.thenAccept(listData -> { for (var guild : listData) { System.out.println(guild); } }).exceptionally(err -> { logger.error(\"err!\", err); return null; });","s":"获取用户频道服务器列表","u":"/docs/quick-start/api","h":"#获取用户频道服务器列表","p":56},{"i":66,"t":"本编文档介绍使用: simboot-core-spring-boot-starter: simbot3 的 Spring Boot Starter simbot-component-kook-core: simbot3 的 KOOK 组件 来编写搭建一个基于simbot和Spring的KOOK机器人项目。","s":"前言","u":"/docs/quick-start/spring-boot","h":"#前言","p":64},{"i":68,"t":"首先你应当准备至少一个可用的 KOOK机器人 。","s":"前提准备","u":"/docs/quick-start/spring-boot","h":"#前提准备","p":64},{"i":70,"t":"1. 准备 Spring Boot 项目 首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。 2. 添加 simbot 依赖 然后额外添加两个我们需要的依赖: love.forte.simbot.boot:simboot-core-spring-boot-starter (版本参考) love.forte.simbot.component:simbot-component-kook-core (版本参考) 保持住 注意,在使用 Spring Boot 的时候你需要一些能够使程序保持运行的组件,例如通过 spring-web 启用一个服务器,否则程序可能会自动终止。 因为simbot的 starter 并不提供维持程序运行的能力。 当然,你也可以选择使用一个线程来自行实现程序保活。 Gradle Kotlin DSL Gradle Groovy Maven // simbot core starter implementation(\"love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION\") // 版本请参考前文的参考链接 // KOOK组件 implementation(\"love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8\") // 版本可参考前文的参考链接 // simbot core starter implementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // 版本请参考前文的参考链接 // KOOK组件 implementation 'love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8' // 版本可参考前文的参考链接 love.forte.simbot.boot simboot-core-spring-boot-starter ${SIMBOT_VERSION} love.forte.simbot.component simbot-component-kook-core 3.2.0.0-alpha.8 3. 选择并安装合适的 Ktor Client 依赖 前往 Ktor: HTTP client Engines 选择并使用一个合适的、支持 websocket 连接 的 HTTP Client 引擎。 限制条件 注意: 你需要选择一个支持HTTP 1.1和WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。 各引擎实现的限制可参考 Ktor文档。 例如: Gradle Kotlin DSL Gradle Groovy Maven 以 CIO 引擎为例: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 如果没有使用 Gradle 的 Kotlin 插件,则主动分配平台后缀: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio-jvm:<合适且较新的Ktor版本>\") 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-java:<合适且较新的Ktor版本>\") 以 CIO 引擎为例: // 或使用 runtimeOnly implementation 'io.ktor:ktor-client-cio:<合适且较新的Ktor版本>' 如果没有使用 Gradle 的 Kotlin 插件,则主动分配平台后缀: // 或使用 runtimeOnly implementation 'io.ktor:ktor-client-cio-jvm:<合适且较新的Ktor版本>' 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: // 或使用 runtimeOnly implementation 'io.ktor:ktor-client-java:<合适且较新的Ktor版本>' 以 CIO 引擎为例: io.ktor ktor-client-cio-jvm 合适且较新的Ktor版本 runtime 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: io.ktor ktor-client-java 合适且较新的Ktor版本 runtime ","s":"项目构建","u":"/docs/quick-start/spring-boot","h":"#项目构建","p":64},{"i":72,"t":"接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot 或 .bot.json ) 。 配置文件的具体内容则参考章节 BOT配置文件 。 此路径以 IDEA 的项目结构风格为准,如果是其他IDE,使用对应的资源文件目录。 ${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json 可配置 如果想要修改此路径,可在 Spring Boot 的配置文件中进行配置: properties YAML # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 simbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot* simbot: # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 bot-configuration-resources: - 'classpath:simbot-bots/*.bot*'","s":"BOT配置","u":"/docs/quick-start/spring-boot","h":"#bot配置","p":64},{"i":74,"t":"像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot : Kotlin Java com.example.App.kt @EnableSimbot @SpringBootApplication class App fun main(vararg args: String) { runApplication(args = args) } 早有预防 如果你在Java中遇到了无法引用 @EnableSimbot 等情况,或许可以参考 这篇FAQ。 com.example.App.java @EnableSimbot @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }","s":"启动类","u":"/docs/quick-start/spring-boot","h":"#启动类","p":64},{"i":76,"t":"接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。 此处我们监听 ChannelMessageEvent,也就是 子频道的消息事件。 假设:要求bot必须被AT,并且说一句 你好,此时bot会引用用户发送的消息并回复 你也好! ,类似于: 用户: @BOT 你好 BOT: > 用户: @BOT 你好 你也好! Kotlin Java Blocking Java Async Java Reactive com.example.listener.ExampleListener.kt import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component class ExampleListener { @Listener @Filter(value = \"你好\", targets = Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 event.reply(\"你也好!\") } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public void onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // Java中的阻塞式API event.replyBlocking(\"你也好!\"); } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 CompletableFuture 作为返回值,simbot会以非阻塞的形式处理它 return event.replyAsync(\"你也好!\"); } } 有要求 如果返回值是需要第三方库的响应式类型,那么你的项目环境依赖中必须存在 Kotlin courotines 对其的支持库才可使用。 你可以参考simbot文档: 响应式的处理结果 。 com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public Mono onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它 return Mono.fromCompletionStage(event.replyAsync(\"你也好!\")); } }","s":"监听事件","u":"/docs/quick-start/spring-boot","h":"#监听事件","p":64},{"i":78,"t":"接下来,启动程序并在你的沙箱频道中@它试试看吧。 当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。","s":"启动","u":"/docs/quick-start/spring-boot","h":"#启动","p":64},{"i":80,"t":"前往 simbot3官网 来了解simbot3的各通用能力。 前往 API文档 或通过源码翻阅、搜索并了解具体的功能。 前往 社区 提出疑惑。 最终,本手册网站可能会时不时的更新一些实用性的应用文档。 精力有限 编写使用手册是极其消耗精力的事情。 我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署) 其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。 最终,我们才会考虑完善本手册网站。","s":"更多","u":"/docs/quick-start/spring-boot","h":"#更多","p":64},{"i":82,"t":"stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。 标准库模块是独立的,实质上并不依赖 simbot API。你可以单独使用它作为 KOOK API 与事件订阅能力的底层封装库。 标准库模块依赖API模块。","s":"使用标准库","u":"/docs/quick-start/stdlib","h":"","p":81},{"i":84,"t":"1. 安装 kook-stdlib 依赖 Gradle Kotlin DSL Gradle Groovy Maven Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { kotlin(\"jvm\") version \"合适且较新的版本\" // 或 multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation(\"love.forte.simbot.component:simbot-component-kook-stdlib:3.2.0.0-alpha.8\") // 版本参考下文所述的 Releases Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { id 'org.jetbrains.kotlin.jvm' version '合适且较新的版本' // 或 org.jetbrains.kotlin.multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation 'love.forte.simbot.component:simbot-component-kook-stdlib:3.2.0.0-alpha.8' // 版本参考下文所述的 Releases love.forte.simbot.component simbot-component-kook-stdlib-jvm 3.2.0.0-alpha.8 2. 选择并安装合适的 Ktor Client 依赖 前往 Ktor: HTTP client Engines 选择并使用一个合适的 HTTP Client 引擎。 限制条件 注意: 你需要选择一个支持HTTP 1.1和WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。 各引擎实现的限制可参考 Ktor文档。 例如: Kotlin/JVM Kotlin/JS Kotlin/Native Maven 以 CIO 引擎为例: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-java:<合适且较新的Ktor版本>\") 以 JS 引擎为例: implementation(\"io.ktor:ktor-client-js:<合适且较新的Ktor版本>\") WinHttp Darwin CIO see WinHttp implementation(\"io.ktor:ktor-client-winhttp:<合适且较新的Ktor版本>\") see Darwin implementation(\"io.ktor:ktor-client-darwin:<合适且较新的Ktor版本>\") see CIO implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 以 CIO 引擎为例: io.ktor ktor-client-cio-jvm 合适且较新的Ktor版本 runtime 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: io.ktor ktor-client-java 合适且较新的Ktor版本 runtime ","s":"安装","u":"/docs/quick-start/stdlib","h":"#安装","p":81},{"i":87,"t":"Kotlin/JVM Kotlin/JS Kotlin/Native Java Java Async // 构建一个 bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎 clientEngineFactory = CIO wsEngineFactory = CIO // 是否启用 compress, 默认为true isCompress = true // 禁用API请求时的超时配置 disableTimeout() // 或者自定义超时配置 timeout { requestTimeoutMillis = 5000L connectTimeoutMillis = 5000L } // 以及其他... } // 注册事件处理器 bot.processor { raw -> // this: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"raw: $raw\") } // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.processor(Event.Type.KMARKDOWN) { raw -> // this: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"type: $type\") println(\"raw: $raw\") } // 可以查询bot自身的信息 val me = bot.me() println(\"me: $me\") // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 一个简化版的示例: // 构建bot // 需要确保runtime环境中有可用的ktor引擎,且同时支持HTTP和ws client val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) // 订阅某个具体事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() // 构建一个 bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JS平台下,默认会依赖ktor-js(因为js平台似乎没别的可选),因此此处可以省略 clientEngineFactory = Js wsEngineFactory = Js // 是否启用 compress // JS 平台下默认为 **false** // JS 平台支持开启 compress, 但是可能不够稳定,因此如果非必要,可以不用开启。 isCompress = false // 禁用API请求时的超时配置 disableTimeout() // 或者自定义超时配置 timeout { requestTimeoutMillis = 5000L connectTimeoutMillis = 5000L } // 以及其他... } // 注册事件处理器 bot.processor { raw -> // this: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"raw: $raw\") } // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.processor(Event.Type.KMARKDOWN) { raw -> // this: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"type: $type\") println(\"raw: $raw\") } // 可以查询bot自身的信息 val me = bot.me() println(\"me: $me\") // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 一个简化版的示例: // 构建bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) // 订阅某个具体事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 此处以 MingwX64 平台环境为例: // 构建一个 bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // 不同的native平台请注意选择合适的引擎 clientEngineFactory = WinHttp wsEngineFactory = WinHttp // 是否启用 compress // native 平台下默认为 **false**, 且 **不支持** 开启。 // isCompress = false // 禁用API请求时的超时配置 disableTimeout() // 或者自定义超时配置 timeout { requestTimeoutMillis = 5000L connectTimeoutMillis = 5000L } // 以及其他... } // 注册事件处理器 bot.processor { raw -> // this: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"raw: $raw\") } // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.processor(Event.Type.KMARKDOWN) { raw -> // this: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"type: $type\") println(\"raw: $raw\") } // 可以查询bot自身的信息 val me = bot.me() println(\"me: $me\") // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 一个简化版的示例: // 构建bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // 配置bot进行client请求和ws连接时使用的Ktor引擎 // 不同的native平台请注意选择合适的引擎 clientEngineFactory = WinHttp wsEngineFactory = WinHttp } // 订阅某个具体事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 准备bot配置 final var botConfiguration = new BotConfiguration(); // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎 botConfiguration.setClientEngineFactory(CIO.INSTANCE); botConfiguration.setWsEngineFactory(CIO.INSTANCE); // 是否启用 compress, 默认为true botConfiguration.setCompress(true); // 禁用API请求时的超时配置 botConfiguration.disableTimeout(); // 或者自定义超时配置 final var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration(); timeoutConfiguration.setRequestTimeoutMillis(5000L); timeoutConfiguration.setConnectTimeoutMillis(5000L); botConfiguration.setTimeout(timeoutConfiguration); // 以及其他... // 构建bot final var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration 也可省略,如果都用默认的话 // 注册事件处理器 bot.blockingProcessor((event, raw) -> { // event: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"raw = \" + raw); }); // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.blockingProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); }); // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.blockingProcessor(Event.Type.KMARKDOWN, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getType() = \" + event.getType()); System.out.println(\"raw = \" + raw); }); // 可以查询bot自身的信息 final var me = bot.getMe(); System.out.println(\"me = \" + me); // 启动BOT。调用 startBlocking 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // startAndJoin() 组合了 start() 和 join() bot.startBlocking(); // bot.joinBlocking() 会阻塞当前线程,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.joinBlocking(); 一个简化版的示例: // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 构建bot final var bot = BotFactory.create(ticket);// botConfiguration 也可省略,如果都用默认的话 // 订阅某个具体事件 bot.blockingProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); }); // 启动BOT。调用 startBlocking 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 bot.startBlocking(); // bot.joinBlocking() 会阻塞当前线程,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.joinBlocking(); // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 准备bot配置 final var botConfiguration = new BotConfiguration(); // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎 botConfiguration.setClientEngineFactory(CIO.INSTANCE); botConfiguration.setWsEngineFactory(CIO.INSTANCE); // 是否启用 compress, 默认为true botConfiguration.setCompress(true); // 禁用API请求时的超时配置 botConfiguration.disableTimeout(); // 或者自定义超时配置 final var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration(); timeoutConfiguration.setRequestTimeoutMillis(5000L); timeoutConfiguration.setConnectTimeoutMillis(5000L); botConfiguration.setTimeout(timeoutConfiguration); // 以及其他... // 构建bot final var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration 也可省略,如果都用默认的话 // 注册事件处理器 bot.asyncProcessor((event, raw) -> { // event: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"raw = \" + raw); // ⚠ 不要在任何异步函数体中调用阻塞API。 // 例如:bot.getMe(), xxxBlocking等。 // 任何有 xxxAsync 等价替代的函数都是阻塞函数。 // 假设有个异步任务,返回一个异步结果 return CompletableFuture.completedFuture(null); }); // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.asyncProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); // 假设有个异步任务,返回一个异步结果 return CompletableFuture.completedFuture(null); }); // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.asyncProcessor(Event.Type.KMARKDOWN, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getType() = \" + event.getType()); System.out.println(\"raw = \" + raw); // 假设有个异步任务,返回一个异步结果 return CompletableFuture.completedFuture(null); }); // 可以查询bot自身的信息 // 如果有需要,记得处理异常 bot.getMeAsync().thenAccept(me -> { // 得到结果 System.out.println(\"me = \" + me); }); // 启动BOT。调用 startAsync 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // 如果有需要,记得处理异常 bot.startAsync(); // bot.asFuture() 会转化为一个活跃的 CompletableFuture,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.asFuture().whenComplete((unit, throwable) -> { System.out.println(\"Bot被终止了。\"); System.out.println(\"throwable: \" + throwable); }); 一个简化版的示例: // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 构建bot final var bot = BotFactory.create(ticket); // 订阅某个具体事件 bot.asyncProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); // 假设有个异步任务,返回一个异步结果 // ⚠ 不要在任何异步函数体中调用阻塞API。 // 例如:bot.getMe(), xxxBlocking等。 // 任何有 xxxAsync 等价替代的函数都是阻塞函数。 return CompletableFuture.completedFuture(null); }); // 启动BOT。调用 startAsync 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.asFuture() 会转化为一个活跃的 CompletableFuture,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.startAsync().thenCompose(unit -> bot.asFuture()).whenComplete((unit, throwable) -> { System.out.println(\"Bot被终止了。\"); System.out.println(\"throwable: \" + throwable); });","s":"构建BOT、订阅事件","u":"/docs/quick-start/stdlib","h":"#构建bot订阅事件","p":81},{"i":89,"t":"在标准库中,我们也针对 Bot 提供了一些用于请求API的便捷方法,免除你每次都需要提供 HttpClient 和 authorization 的问题。 以获取频道服务器列表API为例: Kotlin Java Java Async 省略配置过程,Kotlin各平台的使用方式是一致的。 // 构建bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // 配置过程省略 } // 获取频道列表API val api = GetGuildListApi.create() // 通过 bot 请求 val dataList = api.requestBy(bot) dataList.forEach { println(\"guild: $it\") } // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot final var bot = BotFactory.create(ticket); // 构建api final var api = GetGuildListApi.create(); // 请求并得到结果 final var listData = api.requestByBlocking(bot); for (SimpleGuild guild : listData) { System.out.println(\"guild = \" + guild); } // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot final var bot = BotFactory.create(ticket); // 构建api final var api = GetGuildListApi.create(); // 请求并得到结果 api.requestByAsync(bot).thenAccept(listData -> { for (SimpleGuild guild : listData) { System.out.println(\"guild = \" + guild); } });","s":"使用BOT请求API","u":"/docs/quick-start/stdlib","h":"#使用bot请求api","p":81}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,4.633,1,4.633,2,0.125,3,3.852,4,5.708,5,3.231,6,2.738,7,2.102,8,2.457,9,2.255,10,1.116,11,2.59,12,2.426,13,4.633,14,3.127,15,3.471,16,1.84,17,3.471,18,1.431,19,1.657,20,3.933,21,1.726,22,2.851,23,2.426,24,4.633,25,5.708,26,3.471,27,4.633,28,1.965,29,3.933,30,2.255,31,3.471,32,3.471,33,0.695]],["t/4",[2,0.119,5,2.995,6,2.244,9,2.575,10,1.489,16,2.681,17,3.965,28,2.244,34,5.292,35,1.739,36,5.292,37,5.292,38,3.571,39,3.257]],["t/6",[2,0.123,5,2.711,8,1.902,10,1.154,16,2.493,18,1.479,19,1.691,21,2.17,33,0.719,35,1.573,38,3.931,40,3.588,41,1.573,42,0.773,43,1.784,44,2.17,45,2.508,46,4.065,47,2.948,48,4.789,49,2.313,50,2.508,51,2.948,52,3.585,53,4.789,54,4.789,55,4.065,56,2.948,57,4.065,58,2.508,59,2.711,60,4.065,61,4.065,62,2.031]],["t/8",[2,0.123,8,1.611,10,1.6,11,1.84,12,2.124,16,2.674,18,1.253,19,1.177,21,1.511,28,2.609,33,0.609,35,1.333,38,3.542,39,2.496,40,3.039,41,1.333,42,0.847,43,1.955,44,1.955,45,2.124,49,2.311,50,2.124,51,2.496,52,2.496,55,3.443,56,3.23,57,4.455,58,2.124,59,2.296,60,3.443,61,3.443,62,2.768,63,2.831,64,4.056,65,3.039,66,4.056,67,3.293,68,4.056,69,1.177,70,1.72,71,2.124,72,1.72,73,4.056,74,3.932,75,3.443,76,3.443,77,4.056,78,3.039,79,3.23,80,2.296,81,2.496,82,2.296,83,2.737,84,2.737,85,3.443,86,4.056,87,4.056,88,2.737,89,0.86,90,3.039]],["t/10",[2,0.124,5,2.204,6,2.167,8,1.547,9,3.141,10,1.555,11,2.748,12,3.172,16,2.564,18,1.203,19,1.131,20,3.306,21,2.343,22,2.397,26,2.918,35,1.679,38,2.628,40,3.829,41,1.679,42,0.629,43,1.451,47,2.397,49,1.547,50,2.676,51,3.146,52,2.397,56,2.397,58,2.039,62,1.651,63,1.895,67,2.893,70,1.651,71,2.039,72,1.651,76,3.306,79,2.397,89,0.825,91,3.306,92,3.894,93,2.893,94,3.894,95,3.894,96,3.894,97,5.111,98,1.904,99,3.306,100,3.894,101,3.894,102,2.918,103,3.306,104,3.306,105,3.894,106,3.306,107,3.829,108,3.894,109,3.894,110,3.306,111,3.894,112,3.894,113,2.918,114,1.767,115,3.306,116,2.918,117,3.894,118,3.306,119,3.894,120,3.894,121,3.894,122,3.894]],["t/12",[2,0.099]],["t/14",[2,0.108,6,2.275,21,1.998,33,0.805,43,1.998,67,3.036,69,1.557,70,2.275,71,2.809,123,4.554,124,5.365,125,3.302,126,3.036,127,5.365,128,2.275,129,5.365,130,5.365]],["t/16",[2,0.113,10,1.262,11,2.377,12,2.743,16,2.441,21,1.951,28,2.222,33,0.979,47,3.224,70,2.222,79,3.224,126,2.965,128,2.222,131,6.146,132,3.224,133,2.965,134,6.146,135,3.925]],["t/18",[2,0.128,7,0.833,10,0.442,18,1.83,21,0.684,22,1.13,28,0.779,30,1.433,33,0.693,39,1.13,42,0.746,43,0.684,44,2.068,69,1.07,70,2.589,71,2.209,72,0.779,80,1.039,81,1.13,89,0.781,114,0.833,123,2.499,136,1.558,137,1.376,138,1.097,139,1.836,140,1.836,141,1.039,142,1.836,143,1.836,144,1.812,145,1.836,146,2.596,147,1.836,148,1.836,149,1.558,150,2.945,151,1.836,152,1.931,153,1.558,154,1.039,155,2.269,156,3.129,157,1.811,158,2.488,159,3.129,160,1.673,161,2.418,162,2.09,163,3.129,164,3.129,165,3.129,166,1.376,167,1.376,168,1.239,169,1.376,170,5.552,171,4.713,172,1.931,173,1.376,174,3.326,175,3.494,176,1.987,177,1.812,178,2.945,179,2.206,180,1.836,181,1.836,182,1.239,183,2.087,184,1.563,185,2.206,186,1.987]],["t/20",[2,0.128,9,1.641,10,0.812,18,1.433,33,0.506,42,0.545,49,2.107,63,2.258,69,0.979,70,2.541,89,0.984,125,2.856,126,1.909,128,1.431,138,1.256,157,1.18,171,3.939,172,1.766,183,2.627,184,2.25,185,3.477,186,3.132,187,2.076,188,2.076,189,2.527,190,2.276,191,4.641,192,2.276,193,3.373,194,3.373,195,3.373,196,2.527,197,2.863]],["t/22",[2,0.109,9,2.665,10,1.319,11,2.485,30,2.665,33,0.822,56,3.371,70,2.323,71,2.868,125,3.371,198,5.477]],["t/24",[2,0.128,6,1.183,9,0.603,10,0.512,11,0.563,12,0.649,15,0.929,18,1.021,21,1.039,22,0.763,23,0.649,28,1.183,33,0.651,41,0.698,42,0.45,43,1.385,50,2.812,58,1.461,59,0.702,69,1.559,70,2.749,71,2.397,80,2.296,84,0.837,89,1.161,90,0.929,91,1.053,98,0.462,102,0.929,106,1.053,114,1.266,125,0.763,126,1.579,138,1.847,141,0.702,155,1.717,157,1.419,158,2.231,160,2.169,172,0.649,174,1.883,188,0.763,192,1.883,197,2.806,199,1.24,200,2.126,201,3.306,202,0.702,203,2.126,204,1.24,205,4.208,206,1.24,207,1.24,208,1.053,209,3.719,210,1.24,211,3.719,212,1.593,213,0.649,214,1.24,215,1.593,216,1.24,217,0.929,218,1.24,219,1.24,220,1.053,221,1.053,222,1.24,223,1.24,224,0.929,225,1.24,226,1.053,227,0.929,228,1.24,229,1.24,230,4.577,231,1.24,232,2.806,233,2.79,234,2.79,235,2.79,236,3.443,237,2.79,238,1.183,239,2.79,240,1.883,241,1.24,242,0.929,243,1.24,244,2.79,245,2.79,246,1.053,247,2.806,248,2.126,249,2.79,250,1.804,251,1.24,252,1.053,253,1.24,254,1.24,255,1.053,256,1.24,257,0.837,258,2.79,259,2.368,260,2.09]],["t/26",[2,0.099]],["t/28",[2,0.099]],["t/30",[2,0.099]],["t/32",[2,0.119,6,2.136,21,1.876,23,2.637,26,3.773,33,0.901,35,1.655,42,1.036,80,2.851,89,1.067,98,1.876,107,3.773,116,3.773,154,2.851,160,2.285,184,2.136,196,3.773,202,2.851,224,3.773,261,4.275,262,4.275,263,4.499,264,4.275,265,3.773,266,4.052,267,4.275,268,4.275]],["t/34",[2,0.127,154,3.231,269,3.471,270,4.633]],["t/37",[2,0.116,6,2.356,263,4.162,271,5.555,272,5.555,273,4.715]],["t/39",[2,0.125,11,2.256,19,1.443,33,0.746,42,0.803,49,1.975,63,2.419,89,1.054,107,3.725,146,3.06,202,3.373,265,3.725,266,3.355,274,4.972,275,4.972,276,4.972,277,3.12,278,4.22,279,3.355,280,4.972,281,4.972,282,4.972,283,4.22,284,4.972]],["t/41",[2,0.127,7,1.455,8,0.812,11,2.033,17,1.532,22,3.179,23,2.705,30,1.926,33,0.594,39,1.974,41,0.672,42,0.518,44,1.195,46,1.736,47,1.259,49,1.274,50,1.68,58,1.071,59,1.815,65,1.532,72,0.867,79,1.259,80,2.536,81,1.259,82,2.24,85,1.736,89,1.032,90,2.403,93,1.157,98,1.813,110,1.736,114,0.928,116,1.532,118,1.736,128,1.9,133,2.24,138,1.195,141,2.24,144,1.259,146,2.758,149,2.723,157,0.715,161,1.071,162,2.19,168,1.38,172,1.071,184,2.653,189,1.532,192,2.165,196,2.403,202,2.24,213,2.828,215,2.403,220,1.736,238,2.064,250,3.359,252,1.736,255,2.723,264,1.736,269,1.532,277,1.071,278,2.723,279,3.024,285,3.359,286,2.045,287,4.868,288,3.957,289,6.18,290,3.957,291,2.045,292,2.723,293,2.045,294,2.045,295,3.207,296,2.045,297,1.259,298,2.045,299,1.736,300,2.045,301,1.974,302,3.804,303,4.481,304,2.045,305,2.045,306,2.045,307,2.045,308,1.736,309,2.045,310,2.045,311,3.207,312,1.736,313,3.207,314,1.736,315,3.207,316,2.045,317,1.736,318,3.207,319,2.045,320,2.723,321,2.045,322,2.045,323,1.736,324,2.045,325,2.045,326,2.045,327,2.045,328,2.045,329,2.045,330,2.045,331,2.045,332,2.045,333,3.957,334,2.403,335,1.736,336,1.532,337,1.736,338,2.045,339,2.045,340,4.481,341,4.868,342,2.045,343,2.045,344,1.974,345,1.532,346,2.165,347,2.045,348,2.045,349,2.045,350,2.403,351,1.38,352,1.532,353,2.723,354,3.207,355,2.045,356,2.045,357,2.045,358,3.207,359,1.736,360,3.207,361,3.957,362,2.045,363,2.723,364,2.045,365,2.045,366,2.045,367,1.736,368,2.045,369,2.045,370,1.736,371,1.532,372,2.045,373,2.045,374,2.045,375,2.045,376,2.045,377,2.045,378,4.481,379,3.207,380,2.045,381,2.045,382,1.736,383,2.723,384,2.723,385,2.045,386,1.736,387,3.207,388,2.045,389,1.736,390,1.736,391,1.736,392,2.045,393,2.045,394,2.045,395,1.736,396,2.045,397,2.045,398,2.045,399,1.736,400,1.532,401,2.045,402,1.736]],["t/43",[2,0.096,6,2.347,21,2.062,33,0.831,42,0.894,114,2.511,153,4.699,154,3.133,403,5.536]],["t/45",[2,0.125,8,2.292,9,2.295,10,1.502,16,2.292,18,1.782,19,1.675,28,2.448,33,0.708,35,1.896,41,1.896,42,1.095,43,2.15,44,2.42,45,3.022,49,1.873,63,2.295,277,2.47,404,3.534,405,4.004]],["t/47",[2,0.123,8,2.123,16,2.123,18,1.651,19,1.552,35,1.756,41,1.756,42,0.863,43,1.991,44,2.316,45,2.8]],["t/49",[2,0.123,8,2.081,10,1.262,16,2.081,18,1.618,19,1.521,28,2.222,35,1.721,41,1.721,42,0.846,43,1.951,44,2.289,45,2.743,49,2.081,63,2.549,277,2.743]],["t/51",[33,0.852,404,4.253]],["t/53",[405,4.836]],["t/55",[2,0.12,9,2.979,10,1.474,31,3.899,32,3.899,33,0.919,42,1.05,89,1.298,162,2.758,172,2.725,404,3.899,406,5.204,407,5.204,408,3.512]],["t/57",[2,0.124,8,2.013,10,1.221,16,2.394,18,1.565,19,1.471,35,1.665,41,1.665,42,0.973,43,2.245,44,2.245,45,2.654,51,3.12,52,3.12,62,2.15,74,3.798,78,3.798,89,1.074,409,4.303]],["t/59",[2,0.127,3,2.821,10,0.537,19,1.618,23,1.796,33,0.334,42,1.038,62,2.555,69,1.213,72,1.454,88,3.611,89,0.995,93,1.261,98,1.277,132,2.11,133,2.656,138,1.277,152,2.189,157,1.199,160,2.61,161,3.156,162,1.99,182,2.314,184,1.99,187,2.11,213,1.796,217,3.131,238,2.555,240,2.314,257,2.314,283,1.892,297,4.022,301,2.11,336,2.569,410,2.569,411,2.911,412,2.888,413,2.569,414,4.199,415,4.515,416,4.515,417,2.569,418,2.911,419,3.516,420,3.131,421,2.11,422,2.314,423,2.314,424,2.314,425,3.516,426,2.314]],["t/61",[2,0.124,3,3.108,7,2.09,23,2.412,30,2.241,39,2.835,69,1.337,75,3.909,83,3.108,89,0.976,98,2.118,128,1.953,132,2.835,136,3.909,137,3.451,138,1.716,154,2.607,157,1.611,160,2.09,167,3.451,173,3.451,176,3.108,177,2.835,215,4.261,224,3.451,227,3.451,247,4.828,259,3.909,346,3.108,367,3.909,386,3.909,402,4.828,413,3.451,427,4.606,428,4.606,429,4.606,430,4.606,431,3.909,432,4.606,433,4.606,434,6.171,435,4.606,436,4.606,437,4.606,438,4.606,439,4.606]],["t/63",[2,0.128,18,1.635,19,0.563,30,2.31,33,0.462,42,0.766,44,2.158,58,2.486,59,2.687,69,0.894,80,2.165,89,0.811,98,1.768,114,2.154,144,2.921,146,2.921,152,2.28,155,2.921,156,4.029,157,2.026,158,3.203,159,4.029,160,2.154,161,2.772,162,2.457,163,4.029,164,4.029,165,4.029,166,3.556,167,3.556,168,3.203,169,3.556,175,3.203,176,2.581,177,2.354,212,1.454,344,1.194,346,1.31,408,1.31,440,1.647,441,1.941,442,4.747,443,4.029,444,4.747,445,4.029,446,4.747,447,4.747,448,4.747,449,4.029]],["t/66",[2,0.126,5,2.916,6,2.185,7,2.338,8,2.046,14,3.477,29,4.373,35,1.693,42,0.832,69,1.496,261,4.373,450,5.152,451,5.152]],["t/68",[2,0.096,5,3.144,69,1.613,183,3.144,188,3.419,452,5.555,453,5.555,454,4.715]],["t/70",[2,0.127,6,1.83,7,0.867,12,1.591,19,1.252,21,0.711,35,0.998,41,1.243,42,1.016,62,1.997,65,1.431,67,1.081,69,1.527,72,0.81,79,1.176,82,1.72,84,1.289,88,2.051,89,1.115,93,1.72,98,1.41,99,1.621,113,1.431,114,0.867,128,0.81,133,1.72,138,1.41,152,1.982,157,1.324,158,1.289,160,1.957,161,3.226,162,2.643,182,2.051,183,1.72,184,1.83,187,1.87,188,1.176,208,1.621,213,1.591,238,2.386,240,2.051,257,2.051,277,1,297,3.97,301,1.87,344,1.176,350,1.431,351,2.554,352,1.431,371,2.277,383,2.58,410,1.431,412,1.176,414,3.891,415,4.091,416,4.091,419,2.277,420,2.277,421,1.87,422,2.554,423,2.051,424,2.051,425,3.232,426,2.051,443,1.621,455,1.91,456,3.039,457,1.91,458,3.213,459,1.91,460,1.431,461,1.91,462,1.621,463,1.621,464,1.91,465,1.91,466,1.621,467,1.91,468,1.91,469,3.232,470,5.016,471,5.016,472,5.016,473,1.621,474,1.621,475,3.039]],["t/72",[2,0.127,33,0.771,35,1.687,42,1.018,56,2.415,69,1.139,89,1.089,132,2.415,137,4.551,155,2.415,162,1.664,166,3.848,172,2.055,184,2.674,187,2.415,202,2.221,213,2.69,232,5.156,236,5.156,238,2.576,242,3.848,262,3.33,263,4.551,476,2.94,477,5.136,478,3.924,479,3.924,480,3.924,481,3.924,482,3.924,483,3.924,484,3.924,485,3.924,486,3.924,487,3.924,488,5.136,489,5.136,490,5.136]],["t/74",[2,0.127,33,0.683,58,2.384,69,1.639,72,1.93,89,0.965,138,1.696,157,1.592,162,1.93,179,3.411,190,3.072,227,3.411,238,1.93,266,3.072,323,3.864,460,3.411,491,4.552,492,4.552,493,4.552,494,4.552,495,4.552,496,3.864,497,4.552,498,4.552]],["t/76",[2,0.127,7,0.964,10,0.796,11,0.964,14,1.434,33,0.496,35,0.698,41,0.698,42,0.343,43,1.231,49,2.085,50,3.115,59,2.971,62,0.901,69,0.96,70,2.675,71,1.113,72,0.901,83,3.345,89,0.451,98,1.511,115,3.884,126,1.871,128,0.901,135,2.477,138,1.705,141,1.203,144,2.817,157,0.743,162,0.901,169,2.477,177,1.308,179,1.593,205,3.884,212,3.039,226,1.804,238,0.901,260,4.244,267,1.804,268,2.806,273,3.884,279,3.088,350,3.429,363,3.884,389,1.804,395,1.804,399,5.142,400,1.593,408,1.434,426,3.088,476,1.593,499,2.126,500,2.126,501,2.126,502,2.126,503,1.804,504,3.306,505,2.126,506,2.126,507,5.479,508,1.804,509,5.249,510,4.576,511,4.576,512,4.576,513,5.665,514,5.665,515,4.576,516,4.576,517,4.576,518,4.576,519,4.576,520,3.443,521,4.576,522,4.057,523,3.306,524,2.126,525,4.057,526,2.126,527,1.593,528,2.126]],["t/78",[2,0.089,33,0.773,89,1.092,113,3.86,128,2.185,141,2.916,190,3.477,238,2.185,308,4.373,320,5.166,334,4.853,421,3.171,458,4.373,476,3.86,496,4.373,529,5.152,530,5.152,531,5.152,532,4.373,533,5.152,534,5.152,535,5.152,536,5.152,537,5.152,538,4.373,539,4.373,540,5.152]],["t/80",[2,0.113,7,2.954,14,2.935,31,3.259,32,3.259,33,0.653,67,2.462,81,2.677,82,2.462,98,2.425,102,3.259,104,3.692,114,1.973,128,2.55,138,1.62,188,2.677,221,3.692,266,2.935,269,3.259,297,2.677,312,3.692,314,4.658,335,3.692,337,3.692,345,3.259,352,3.259,382,3.692,412,2.677,421,3.7,431,5.103,508,3.692,527,3.259,538,4.658,539,3.692,541,5.488,542,4.35,543,4.35,544,3.692,545,5.488,546,5.488,547,5.488,548,5.488,549,4.35,550,4.35,551,4.35,552,4.35,553,4.35,554,4.35,555,4.35,556,4.35,557,4.35,558,4.35,559,4.35,560,4.35,561,4.35,562,4.35,563,4.35,564,4.35,565,4.35,566,4.35,567,4.35]],["t/82",[2,0.124,8,1.914,10,1.576,16,2.599,18,1.488,19,1.399,28,2.669,35,1.583,41,1.583,42,0.944,43,2.178,44,2.178,45,2.523,49,2.322,51,2.966,52,2.966,62,2.48,63,2.845,67,2.728,74,3.61,78,3.61,89,1.021,277,2.523,409,4.09]],["t/84",[2,0.127,3,2.764,7,0.979,10,0.52,12,1.13,19,1.599,23,1.751,33,0.324,41,1.099,42,1.032,62,2.533,69,1.339,72,1.418,82,1.221,84,1.456,88,3.564,89,1.119,93,1.221,98,1.246,132,2.059,133,2.611,138,1.246,152,2.145,157,1.432,160,2.583,161,3.276,162,1.956,182,2.257,184,1.956,187,2.059,213,1.751,217,3.069,238,2.533,240,2.257,257,2.257,297,3.934,301,2.059,336,2.506,351,2.257,371,2.506,410,2.506,411,2.839,412,2.839,413,2.506,414,4.167,415,4.475,416,4.475,417,2.506,418,2.839,419,3.457,420,3.069,421,1.328,422,2.257,423,2.257,424,2.257,425,3.457,426,2.257,469,1.617,473,1.832,474,1.832]],["t/87",[2,0.127,15,0.916,18,1.138,19,1.122,30,1.193,33,0.682,41,0.557,42,0.446,44,1.439,49,2.619,50,2.581,62,0.282,63,2.572,69,1.406,70,1.563,72,0.518,81,1.509,82,1.188,83,1.143,89,0.986,93,2.633,98,2.131,125,3.648,126,0.692,133,0.692,135,3.693,144,1.509,146,1.509,152,0.349,154,1.387,157,0.592,160,0.555,161,2.108,168,0.449,172,2.32,174,0.449,175,1.654,177,0.752,183,1.562,184,2.266,186,1.417,189,1.836,190,2.488,192,3.326,202,1.562,213,2.108,238,1.17,242,1.836,246,4.184,260,3.693,265,1.836,277,3.036,279,2.607,285,2.081,292,4.184,299,0.565,301,1.043,302,2.081,317,0.565,344,2.269,345,0.499,351,0.825,353,4.316,359,2.342,370,3.129,384,3.129,390,3.761,391,3.129,400,3.406,408,1.654,412,1.043,414,0.825,417,1.269,422,1.654,423,2.488,424,1.143,440,1.037,445,1.782,449,1.037,454,0.565,460,1.836,462,1.037,463,0.565,466,1.037,469,0.916,503,1.782,520,2.342,527,3.693,532,1.037,544,3.129,568,4.929,569,5.084,570,3.687,571,3.687,572,2.451,573,2.451,574,2.451,575,3.687,576,3.687,577,3.687,578,3.687,579,3.687,580,3.032,581,2.451,582,0.666,583,0.666,584,0.666,585,0.666,586,1.694,587,0.666,588,0.666,589,0.666,590,2.099,591,1.222,592,1.222,593,2.099,594,1.222,595,1.222,596,1.222]],["t/89",[2,0.127,10,0.849,18,1.879,19,1.023,21,1.781,28,1.495,30,1.716,33,0.529,42,0.569,44,2.168,47,2.17,103,2.992,114,1.599,128,1.495,138,1.313,141,2.707,152,1.846,155,2.17,157,1.233,173,2.641,174,3.228,175,3.228,176,3.228,183,2.707,184,2.468,185,4.361,186,3.928,334,2.641,344,2.17,346,3.228,597,3.525,598,3.525,599,3.525,600,3.525]]],"invertedIndex":[["",{"_index":2,"t":{"2":{"position":[[5,6],[12,5],[24,6],[33,4],[49,4],[61,4],[71,6],[83,4],[96,4],[103,6],[124,3],[129,6],[136,13],[153,6],[160,3],[169,3],[177,4],[189,3],[212,6],[236,6]]},"4":{"position":[[0,6],[7,4],[35,3],[41,6],[55,4]]},"6":{"position":[[3,3],[11,3],[23,3],[27,2],[30,6],[43,4],[50,3],[56,4],[70,3],[85,4],[99,3],[144,3]]},"8":{"position":[[11,3],[23,3],[27,2],[30,6],[43,4],[50,3],[56,4],[65,2],[86,3],[101,4],[107,3],[128,3],[148,3],[179,3],[206,3],[218,6],[255,6],[304,3]]},"10":{"position":[[11,6],[18,3],[30,3],[45,4],[50,3],[62,6],[72,4],[90,6],[117,6],[124,3],[140,6],[150,4],[155,3],[167,6],[178,3],[186,7],[197,4],[231,6],[238,3],[277,6],[284,4],[309,3],[343,3],[385,3]]},"12":{"position":[[0,4]]},"14":{"position":[[9,3],[33,4]]},"16":{"position":[[2,3],[23,3],[37,3]]},"18":{"position":[[2,3],[12,3],[21,4],[26,5],[32,6],[39,4],[44,3],[48,7],[70,3],[81,21],[113,20],[163,3],[185,21],[219,6],[226,4],[231,4],[236,5],[251,4],[256,10],[296,5],[304,4],[309,2],[312,4],[317,4],[322,6],[329,7],[337,4],[342,3],[346,6],[355,10],[366,3],[376,6],[400,3],[410,3],[414,5],[423,5],[431,9],[441,7],[449,2],[452,3],[456,9],[466,3],[470,13],[487,3],[491,10],[512,3],[519,3],[536,3],[540,3],[546,21],[568,6],[575,8],[589,2],[594,7],[623,21],[645,6],[654,7],[667,4],[674,1],[676,4],[681,15],[697,9],[708,5],[717,5],[724,5],[733,5],[740,12],[756,12],[780,3],[784,6],[793,3],[797,11],[809,6],[817,13],[832,7],[841,6],[851,6],[860,7],[869,6],[876,5],[886,6],[893,5],[902,7],[911,6],[918,5],[928,6],[935,5],[944,7],[953,6],[960,12],[977,6],[984,12],[1004,4],[1017,4],[1024,10],[1045,4],[1050,10],[1090,5],[1098,4],[1103,2],[1106,4],[1111,4],[1116,6],[1123,7],[1131,4],[1143,4],[1148,3],[1158,3],[1162,6],[1171,12],[1184,10],[1195,3],[1199,8],[1209,6],[1224,6],[1234,6],[1241,4],[1246,8],[1272,3],[1282,3],[1286,5],[1295,5],[1303,9],[1313,7],[1321,2],[1324,3],[1328,9],[1338,3],[1342,13],[1359,3],[1363,10],[1381,3],[1385,3],[1389,3],[1395,21],[1417,6],[1427,2],[1451,21],[1473,6],[1480,15],[1496,9],[1506,8],[1521,2],[1535,21],[1557,6],[1564,15],[1580,9],[1590,8],[1605,2],[1619,5],[1626,2],[1632,5],[1641,12],[1663,7],[1672,21],[1694,7],[1705,2],[1719,4],[1724,15],[1740,9],[1752,7],[1761,7],[1772,5],[1779,5],[1788,5],[1795,5],[1804,12],[1818,12],[1833,5],[1853,3],[1857,6],[1866,3],[1870,19],[1890,6],[1898,13],[1914,6],[1921,3],[1925,7],[1934,6],[1941,8],[1958,6],[1965,8],[1978,6],[1985,3],[1989,7],[1998,6],[2005,8],[2022,6],[2029,8],[2042,6],[2049,3],[2053,7],[2062,6],[2069,15],[2093,6],[2100,15],[2124,4],[2137,4],[2144,10],[2165,4],[2170,10],[2210,5],[2218,4],[2223,2],[2226,4],[2231,4],[2236,6],[2243,7],[2251,4],[2263,4],[2268,3],[2278,3],[2282,6],[2291,12],[2304,10],[2315,3],[2319,8],[2329,6],[2344,6],[2354,6],[2361,4],[2366,8],[2392,3],[2402,3],[2406,5],[2415,5],[2423,9],[2433,7],[2441,2],[2444,3],[2448,9],[2458,3],[2462,13],[2479,3],[2483,10],[2501,3],[2505,3],[2509,3],[2515,21],[2537,6],[2547,2],[2571,21],[2593,6],[2600,15],[2616,9],[2626,8],[2641,2],[2655,21],[2677,6],[2684,15],[2700,9],[2710,8],[2725,2],[2739,5],[2746,2],[2752,5],[2761,12],[2783,7],[2792,21],[2814,7],[2825,2],[2839,4],[2844,15],[2860,9],[2872,7],[2881,7],[2892,5],[2899,5],[2908,5],[2915,5],[2924,12],[2938,12],[2953,5],[2973,3],[2977,16],[2994,6],[3002,13],[3017,10],[3028,6],[3050,6],[3057,3],[3061,7],[3070,6],[3083,6],[3092,6],[3099,3],[3103,7],[3112,6],[3119,8],[3136,6],[3143,8],[3156,6],[3163,3],[3167,7],[3176,6],[3183,8],[3200,6],[3207,8],[3220,6],[3227,3],[3231,7],[3240,6],[3247,15],[3271,6],[3278,15],[3302,3],[3306,3],[3325,3],[3335,3],[3359,10],[3372,13],[3389,6],[3396,4],[3401,4],[3406,5],[3412,3],[3416,3],[3422,10],[3433,6],[3440,6],[3447,11],[3460,9],[3460,6],[3467,2],[3473,5],[3500,3],[3507,3],[3511,3],[3529,3],[3533,6],[3542,3],[3546,9],[3556,3],[3566,6],[3573,3],[3577,6],[3586,6],[3593,11],[3606,9],[3606,6],[3613,2],[3619,5],[3646,3],[3650,3],[3654,3],[3660,10],[3671,6],[3678,6],[3692,3],[3699,3],[3703,3],[3724,3],[3728,6],[3737,3],[3741,17],[3759,3],[3770,6],[3777,3],[3781,6],[3790,6],[3797,11],[3810,9],[3810,6],[3817,2],[3823,5],[3850,3],[3854,3],[3858,3],[3864,10],[3875,6],[3882,6],[3896,3],[3903,3],[3907,3],[3928,3],[3932,14],[3947,3],[3952,10],[3963,6]]},"20":{"position":[[23,3],[53,6],[60,4],[65,4],[70,5],[76,3],[80,3],[86,10],[97,6],[104,6],[111,11],[124,9],[124,6],[131,2],[137,5],[159,3],[163,9],[173,14],[191,3],[201,4],[207,5],[213,14],[230,3],[235,6],[242,7],[253,4],[260,3],[266,7],[275,5],[283,4],[290,7],[299,5],[305,5],[314,4],[319,5],[328,7],[337,7],[348,4],[353,7],[366,3],[370,12],[390,6],[397,3],[401,6],[410,6],[417,11],[430,9],[430,6],[437,2],[443,5],[470,3],[474,3],[478,3],[484,10],[495,6],[502,6],[511,3],[515,17],[533,14],[548,5],[556,5],[563,3],[573,6],[580,3],[584,7],[593,3],[603,3],[609,6],[616,3],[620,7],[629,5],[641,5],[649,6],[656,3],[660,7],[669,5],[675,5],[687,5],[693,8],[706,6],[713,3],[717,7],[726,7],[740,5],[746,10],[765,3],[769,13],[786,3],[790,12],[811,6],[818,3],[822,6],[831,6],[838,11],[851,9],[851,6],[858,2],[864,5],[891,3],[895,3],[899,3],[905,10],[916,6],[923,6],[932,3],[936,14],[951,14],[966,5],[974,5],[981,3],[991,6],[998,3],[1002,7],[1011,3],[1021,3],[1027,6],[1034,3],[1038,7],[1047,5],[1059,5],[1067,6],[1074,3],[1078,7],[1087,5],[1093,5],[1105,5],[1111,8],[1124,6],[1131,3],[1135,7],[1144,7],[1158,5],[1164,10],[1179,6],[1186,17],[1204,15],[1220,4],[1231,3],[1235,10],[1248,4],[1260,7]]},"22":{"position":[[19,6],[26,3]]},"24":{"position":[[0,4],[12,6],[74,9],[109,6],[116,4],[121,4],[126,5],[132,3],[136,7],[150,7],[158,4],[171,7],[179,4],[191,6],[201,3],[205,7],[219,7],[227,12],[249,7],[257,12],[270,4],[275,2],[288,3],[292,7],[306,7],[314,9],[333,7],[341,9],[351,4],[356,2],[369,13],[385,5],[407,6],[414,4],[419,4],[424,5],[430,3],[434,7],[448,7],[456,4],[461,4],[468,2],[471,3],[475,3],[481,10],[494,7],[505,3],[509,7],[523,3],[527,4],[534,5],[540,3],[546,2],[549,3],[553,3],[560,3],[564,8],[575,8],[584,2],[587,4],[594,3],[598,13],[614,5],[620,2],[623,8],[634,7],[642,9],[652,13],[668,3],[672,7],[686,3],[690,4],[697,5],[703,3],[709,2],[712,3],[716,3],[723,3],[727,8],[738,8],[747,2],[750,4],[757,3],[761,13],[777,5],[783,2],[786,8],[797,7],[805,9],[815,13],[831,2],[843,2],[868,6],[875,4],[880,4],[885,5],[891,3],[895,7],[909,3],[913,6],[922,2],[925,3],[929,2],[933,3],[937,9],[949,2],[952,3],[956,2],[960,12],[973,15],[973,2],[976,4],[981,7],[995,12],[1008,9],[1018,3],[1022,2],[1026,3],[1030,6],[1039,2],[1042,3],[1046,2],[1050,12],[1063,12],[1063,2],[1066,4],[1071,4],[1082,12],[1095,6],[1102,3],[1106,2],[1110,7],[1118,4],[1123,6],[1131,7],[1139,4],[1144,6],[1153,9],[1165,6],[1173,3],[1177,7],[1191,3],[1195,6],[1204,3],[1208,2],[1211,10],[1222,2],[1225,3],[1232,3],[1236,9],[1248,3],[1252,2],[1255,10],[1266,2],[1269,3],[1275,12],[1288,15],[1288,2],[1291,4],[1296,7],[1311,12],[1324,9],[1334,10],[1345,2],[1348,3],[1355,3],[1359,6],[1368,3],[1372,2],[1375,10],[1386,2],[1389,3],[1395,12],[1408,12],[1408,2],[1411,4],[1416,4],[1428,12],[1441,6],[1448,10],[1459,2],[1462,3],[1469,7],[1477,12],[1490,6],[1499,7],[1507,12],[1520,8],[1529,10],[1540,6],[1548,9],[1559,6],[1569,3],[1573,7],[1587,3],[1591,6],[1600,3],[1604,2],[1607,10],[1618,2],[1621,3],[1628,3],[1632,9],[1644,3],[1648,2],[1651,10],[1662,2],[1665,3],[1671,12],[1684,15],[1684,2],[1687,4],[1692,7],[1707,12],[1720,9],[1730,10],[1741,2],[1744,3],[1751,3],[1755,6],[1764,3],[1768,2],[1771,10],[1782,2],[1785,3],[1791,12],[1804,12],[1804,2],[1807,4],[1812,4],[1824,12],[1837,6],[1844,10],[1855,2],[1858,3],[1865,7],[1873,9],[1883,6],[1892,7],[1900,9],[1910,8],[1919,10],[1930,6],[1938,9],[1949,6],[1959,5],[1974,5],[1986,6],[1993,4],[1998,4],[2003,5],[2009,3],[2013,7],[2027,7],[2035,4],[2040,5],[2047,3],[2051,7],[2065,7],[2073,12],[2086,5],[2092,8],[2103,3],[2107,7],[2121,7],[2129,9],[2139,5],[2145,8],[2156,5],[2163,5],[2172,9],[2188,5],[2197,5],[2206,6],[2213,4],[2218,4],[2223,5],[2229,3],[2233,7],[2247,7],[2255,4],[2260,5],[2266,3],[2270,2],[2275,3],[2279,7],[2293,7],[2301,12],[2314,3],[2318,5],[2324,10],[2335,2],[2338,3],[2346,3],[2350,7],[2364,7],[2372,9],[2382,3],[2386,5],[2392,10],[2403,2],[2406,3],[2421,6],[2437,4],[2486,18],[2512,4],[2525,16],[2548,3],[2559,5],[2583,6],[2590,4],[2595,4],[2600,5],[2606,3],[2610,7],[2629,3],[2657,3],[2661,5],[2669,14],[2684,6],[2696,9],[2728,3],[2732,6],[2741,14],[2756,5],[2763,3],[2767,8],[2778,9],[2788,5],[2795,11],[2807,4],[2833,7],[2841,4],[2846,6],[2854,7],[2862,4],[2867,8],[2877,3],[2881,7],[2900,3],[2928,3],[2932,5],[2940,14],[2955,6],[2967,17],[3008,3],[3012,6],[3021,3],[3025,14],[3040,5],[3048,3],[3052,8],[3063,3],[3067,9],[3077,5],[3084,11],[3096,4],[3123,7],[3131,12],[3144,6],[3153,7],[3161,12],[3174,8],[3185,3],[3189,7],[3208,3],[3236,14],[3251,6],[3263,14],[3283,10],[3294,5],[3322,3],[3326,6],[3335,3],[3339,14],[3354,5],[3362,3],[3366,8],[3377,3],[3381,9],[3391,5],[3398,11],[3410,4],[3437,7],[3445,9],[3455,6],[3464,7],[3472,9],[3482,8],[3497,20],[3522,20],[3560,9],[3574,6],[3581,4],[3586,4],[3591,5],[3597,3],[3601,7],[3625,9],[3646,3],[3650,3],[3656,20],[3677,14],[3694,4],[3707,7],[3717,4],[3728,7],[3738,11],[3770,1],[3775,1],[3791,7],[3799,4],[3804,3],[3809,3],[3813,7],[3832,9],[3842,3],[3846,7],[3856,3],[3860,16],[3880,7],[3888,4],[3899,7],[3910,7],[3918,4],[3929,7],[3940,7],[3948,11],[3976,1],[3981,1],[3986,3],[3990,9],[4002,7],[4010,5],[4019,7],[4027,12],[4040,3],[4044,20],[4065,9],[4078,3],[4082,7],[4101,9],[4111,3],[4115,7],[4125,3],[4129,16],[4149,7],[4157,4],[4168,7],[4179,7],[4187,4],[4198,7],[4209,7],[4217,11],[4245,1],[4250,1],[4255,3],[4259,9],[4271,7],[4279,5],[4288,7],[4296,9],[4306,3],[4310,20],[4331,9],[4344,15],[4364,20],[4389,4],[4403,6],[4410,4],[4415,4],[4420,5],[4426,3],[4430,7],[4449,4],[4456,3],[4460,11],[4474,15],[4490,16],[4509,4],[4516,5],[4530,5],[4538,5],[4544,7],[4552,7],[4562,6],[4570,3],[4607,4],[4614,15],[4630,11],[4642,6],[4662,4],[4667,4],[4672,5],[4678,7],[4686,4],[4691,11],[4704,3],[4708,7],[4733,4],[4744,3],[4748,7],[4758,3],[4762,15],[4778,11],[4790,6],[4808,7],[4816,12],[4829,7],[4839,3],[4843,7],[4868,4],[4879,3],[4883,7],[4893,3],[4897,15],[4913,11],[4925,6],[4943,7],[4951,9],[4961,7],[4971,13],[4986,4],[5008,9],[5023,3],[5027,4],[5032,3],[5038,6],[5045,4],[5050,4],[5055,5],[5061,3],[5065,7],[5079,7],[5087,4],[5092,13],[5107,3],[5111,7],[5125,7],[5133,12],[5146,13],[5160,8],[5171,3],[5175,7],[5189,7],[5197,9],[5207,13],[5221,8],[5232,21],[5266,11],[5298,5],[5307,11],[5342,5],[5359,6],[5366,4],[5371,4],[5376,5],[5382,3],[5386,7],[5400,3],[5404,11],[5426,1],[5445,12],[5466,3],[5470,14],[5487,18],[5506,11],[5519,3],[5523,15],[5541,19],[5561,11],[5574,3],[5578,15],[5596,19],[5616,11],[5629,3],[5633,10],[5646,14],[5661,11],[5674,7],[5682,4],[5687,14],[5703,7],[5711,4],[5716,15],[5733,7],[5741,4],[5746,15],[5763,7],[5771,4],[5776,10],[5788,3],[5792,7],[5806,3],[5810,11],[5833,1],[5852,12],[5873,3],[5877,14],[5894,3],[5898,18],[5917,11],[5931,3],[5935,15],[5953,3],[5957,19],[5977,11],[5991,3],[5995,15],[6013,3],[6017,19],[6037,11],[6051,3],[6055,10],[6068,3],[6072,14],[6087,11],[6101,7],[6109,12],[6122,14],[6139,7],[6147,12],[6160,15],[6178,7],[6186,12],[6199,15],[6217,7],[6225,12],[6238,10],[6251,3],[6255,7],[6269,3],[6273,11],[6296,1],[6315,12],[6336,3],[6340,14],[6357,3],[6361,18],[6380,11],[6394,3],[6398,15],[6416,3],[6420,19],[6440,11],[6454,3],[6458,15],[6476,3],[6480,19],[6500,11],[6514,3],[6518,10],[6531,3],[6535,14],[6550,11],[6564,7],[6572,9],[6582,14],[6599,7],[6607,9],[6617,15],[6635,7],[6643,9],[6653,15],[6671,7],[6679,9],[6689,10]]},"26":{"position":[[0,4]]},"28":{"position":[[0,4]]},"30":{"position":[[0,4]]},"32":{"position":[[7,3],[32,3],[53,6],[60,4],[74,6],[84,10]]},"34":{"position":[[6,3],[10,3],[14,4],[22,9],[35,6],[42,4],[50,6],[62,8],[74,4],[79,6],[86,2],[92,5],[101,4],[106,2],[109,5],[120,6],[132,10],[145,4],[152,11],[169,5],[180,10],[193,6],[202,10],[215,1],[221,18],[245,12],[260,4],[267,10],[280,4],[289,14],[309,12],[324,4],[331,10],[344,4],[353,7],[366,20],[389,4],[396,20],[419,4],[426,19],[448,4],[457,16],[476,4],[483,25],[511,4],[528,3],[532,3],[536,4],[544,9],[557,6],[564,4],[572,6],[584,8],[596,4],[601,6],[608,2],[614,5],[623,4],[628,2],[631,5]]},"37":{"position":[[4,6],[11,4],[27,4]]},"39":{"position":[[2,3],[16,4],[21,3],[29,4],[47,3],[66,4],[84,6],[91,8],[101,3],[106,6],[113,2],[117,6],[124,5],[131,3],[137,9],[155,5]]},"41":{"position":[[9,6],[16,10],[39,4],[48,7],[56,3],[63,8],[76,6],[83,11],[114,6],[126,11],[143,5],[154,10],[167,6],[176,10],[189,1],[208,2],[211,1],[213,1],[215,1],[217,5],[223,1],[287,6],[299,11],[316,5],[327,10],[340,1],[344,10],[357,1],[369,10],[384,1],[582,11],[594,5],[625,11],[637,5],[643,10],[676,1],[718,6],[727,6],[739,3],[747,1],[778,11],[790,5],[796,10],[822,10],[868,3],[931,6],[938,18],[959,6],[966,14],[982,18],[1003,14],[1040,3],[1044,6],[1053,2],[1063,10],[1097,4],[1104,22],[1142,12],[1156,9],[1166,7],[1174,7],[1182,5],[1188,6],[1201,4],[1208,10],[1220,7],[1228,4],[1233,10],[1244,6],[1257,4],[1264,6],[1271,7],[1280,3],[1286,3],[1305,4],[1310,11],[1328,7],[1339,4],[1361,7],[1371,4],[1403,6],[1415,7],[1425,4],[1437,20],[1460,20],[1487,4],[1504,6],[1516,7],[1543,4],[1549,20],[1571,1],[1573,4],[1578,6],[1585,8],[1594,2],[1597,7],[1605,2],[1608,4],[1613,4],[1619,4],[1624,7],[1632,1],[1634,7],[1642,2],[1645,9],[1655,1],[1657,8],[1672,4],[1677,11],[1689,20],[1711,1],[1713,4],[1718,6],[1725,2],[1728,5],[1734,1],[1736,6],[1743,6],[1750,9],[1760,1],[1762,10],[1773,4],[1778,1],[1780,6],[1793,4],[1798,11],[1810,19],[1831,1],[1833,7],[1841,4],[1846,2],[1849,10],[1860,7],[1868,3],[1872,4],[1877,7],[1885,4],[1890,10],[1901,4],[1906,4],[1911,1],[1913,6],[1926,4],[1931,11],[1943,6],[1950,16],[1968,2],[1980,2],[1988,4],[1997,6],[2004,25],[2031,13],[2045,6],[2073,4],[2082,5],[2091,6],[2107,7],[2138,3]]},"43":{"position":[[10,4]]},"45":{"position":[[6,3],[10,3],[18,3],[30,3],[34,2],[37,6],[50,4],[57,3],[63,4],[87,6],[101,3],[113,3],[117,2],[120,6],[133,4],[140,3],[146,4],[159,2],[177,6],[197,10]]},"47":{"position":[[0,3],[8,3],[20,3],[24,2],[27,6],[40,4],[47,3],[53,4]]},"49":{"position":[[0,6],[14,3],[26,3],[30,2],[33,6],[46,4],[53,3],[59,4],[72,2]]},"55":{"position":[[0,4],[18,10],[35,6],[42,4],[52,6],[74,7]]},"57":{"position":[[0,3],[8,3],[20,3],[24,2],[27,6],[40,4],[47,3],[53,4],[67,3],[85,6],[92,3],[107,4],[112,3]]},"59":{"position":[[0,1],[6,4],[11,3],[18,6],[25,6],[32,3],[36,6],[43,6],[50,5],[56,6],[65,6],[82,6],[91,6],[117,3],[121,2],[126,6],[135,6],[143,3],[149,7],[173,13],[208,4],[236,3],[262,14],[278,4],[283,5],[289,6],[296,9],[306,6],[313,9],[323,4],[328,3],[332,1],[334,1],[336,1],[338,1],[340,5],[346,1],[363,8],[372,6],[381,6],[398,6],[407,6],[433,3],[437,2],[442,6],[451,2],[455,3],[459,9],[469,6],[476,3],[481,7],[505,3],[509,9],[519,6],[526,13],[561,4],[589,3],[615,14],[631,4],[636,5],[642,6],[649,9],[659,6],[666,9],[676,4],[681,3],[685,1],[687,1],[689,1],[691,1],[693,5],[699,1],[715,8],[725,10],[738,7],[746,4],[751,5],[757,6],[764,9],[775,7],[790,5],[801,3],[813,3],[825,10],[836,6],[843,9],[853,4],[858,3],[862,3],[867,10],[894,8],[908,7],[916,1],[918,1],[920,1],[922,1],[924,5],[930,1],[933,7],[944,10],[967,8],[983,1],[995,4],[1000,6],[1013,4],[1019,4],[1024,6],[1031,7],[1050,4],[1055,6],[1070,6],[1077,3],[1081,6],[1088,2],[1091,6],[1098,6],[1105,5],[1113,3],[1130,11],[1142,14],[1158,2],[1161,4],[1166,4],[1171,6],[1178,3],[1189,4],[1204,4],[1215,6],[1226,4],[1242,11],[1254,14],[1270,2],[1273,4],[1278,4],[1283,6],[1290,4],[1302,4],[1314,2],[1323,14],[1339,2],[1342,4],[1347,4],[1352,6],[1359,2],[1369,4],[1379,7],[1387,6],[1394,4],[1399,3],[1403,7],[1411,14],[1427,2],[1430,4],[1435,4],[1440,6],[1447,7],[1462,4],[1472,3],[1476,6],[1483,14],[1499,2],[1502,4],[1507,4],[1512,6],[1519,6],[1533,4],[1543,3],[1547,4],[1552,14],[1568,2],[1571,4],[1576,4],[1581,6],[1588,4],[1600,4],[1612,3],[1623,10],[1636,7],[1644,2],[1647,4],[1653,7],[1663,10],[1674,4],[1679,6],[1686,3],[1690,3],[1695,10],[1708,7],[1722,4],[1730,7],[1745,3],[1772,3],[1786,7],[1835,5],[1841,7],[1850,5],[1859,10],[1876,4],[1887,6],[1898,4],[1908,10],[1921,7],[1929,2],[1932,4],[1938,7],[1948,10],[1959,4],[1964,6],[1971,4],[1977,10],[1990,7],[2004,4],[2012,7],[2027,3],[2054,3],[2068,7],[2117,5],[2123,7],[2132,5],[2141,10]]},"61":{"position":[[18,3],[35,3],[44,4],[49,5],[55,6],[62,4],[67,3],[79,3],[101,3],[106,3],[131,3],[138,3],[149,13],[179,3],[200,3]]},"63":{"position":[[9,3],[26,6],[33,3],[37,6],[44,2],[47,6],[54,6],[61,4],[66,4],[71,5],[86,4],[91,10],[131,5],[139,4],[144,2],[147,4],[152,4],[157,6],[164,7],[172,4],[177,3],[181,6],[190,10],[201,3],[211,6],[235,3],[245,3],[249,5],[258,5],[266,9],[276,7],[284,2],[287,3],[291,9],[301,3],[305,13],[322,3],[326,10],[347,3],[354,3],[371,3],[375,3],[381,15],[397,6],[409,7],[417,4],[425,6],[438,4],[464,3],[468,13],[483,8],[492,11],[507,3],[511,11],[523,6],[531,13],[546,13],[560,5],[566,7],[576,7],[585,5],[593,2],[609,13],[623,7],[648,4],[653,10],[693,5],[701,4],[706,2],[709,4],[714,4],[719,6],[726,7],[734,4],[739,3],[743,6],[752,10],[763,2],[772,6],[796,3],[806,3],[810,5],[819,5],[827,9],[837,7],[845,2],[848,3],[852,9],[862,3],[866,13],[883,3],[887,10],[908,3],[915,3],[932,3],[936,3],[942,15],[958,6],[970,7],[978,4],[986,6],[999,4],[1025,3],[1029,13],[1044,8],[1053,11],[1068,3],[1072,11],[1084,6],[1092,13],[1107,13],[1121,5],[1127,7],[1137,7],[1146,5],[1154,2],[1170,13],[1184,7],[1204,8],[1230,4],[1235,10],[1275,5],[1283,4],[1288,2],[1291,4],[1296,4],[1301,6],[1308,7],[1316,4],[1321,3],[1325,6],[1334,10],[1345,7],[1359,6],[1383,3],[1393,3],[1397,5],[1406,5],[1414,9],[1424,7],[1432,2],[1435,3],[1439,9],[1449,3],[1453,13],[1470,3],[1474,10],[1495,3],[1502,3],[1519,3],[1523,3],[1529,15],[1545,6],[1557,7],[1565,4],[1573,6],[1586,4],[1612,3],[1616,13],[1631,8],[1640,11],[1655,3],[1659,11],[1671,6],[1679,13],[1694,13],[1708,5],[1714,7],[1724,7],[1733,5],[1741,2],[1757,13],[1771,7],[1791,4],[1804,4],[1811,10],[1832,4],[1837,10],[1877,5],[1885,4],[1890,2],[1893,4],[1898,4],[1903,6],[1910,7],[1918,4],[1930,4],[1935,3],[1945,3],[1949,6],[1958,12],[1971,10],[1982,3],[1986,8],[1996,6],[2011,6],[2021,6],[2028,4],[2033,8],[2059,3],[2069,3],[2073,5],[2082,5],[2090,9],[2100,7],[2108,2],[2111,3],[2115,9],[2125,3],[2129,13],[2146,3],[2150,10],[2172,3],[2179,3],[2196,3],[2200,3],[2206,15],[2222,6],[2235,19],[2258,6],[2271,4],[2297,3],[2301,13],[2317,3],[2321,19],[2341,6],[2349,13],[2365,3],[2370,3],[2374,5],[2382,13],[2399,6],[2406,3],[2410,7],[2418,5],[2432,4],[2445,4],[2452,10],[2473,4],[2478,10],[2518,5],[2526,4],[2531,2],[2534,4],[2539,4],[2544,6],[2551,7],[2559,4],[2571,4],[2576,3],[2586,3],[2590,6],[2599,12],[2612,10],[2623,3],[2627,8],[2637,6],[2652,6],[2662,6],[2669,4],[2674,8],[2700,3],[2710,3],[2714,5],[2723,5],[2731,9],[2741,7],[2749,2],[2752,3],[2756,9],[2766,3],[2770,13],[2787,3],[2791,10],[2813,3],[2820,3],[2837,3],[2841,3],[2847,15],[2863,6],[2876,16],[2896,6],[2909,4],[2935,17],[2953,8],[2962,11],[2976,19],[2998,3],[3002,16],[3019,6],[3027,13],[3046,3],[3050,3],[3054,6],[3062,2],[3065,6],[3072,9],[3082,19],[3102,10],[3113,8],[3127,3],[3132,3],[3136,5],[3144,8],[3156,6],[3163,3],[3167,7],[3175,5],[3188,13],[3202,3],[3211,6],[3218,5],[3225,3],[3232,3],[3238,6],[3245,4]]},"66":{"position":[[10,7],[18,4],[23,6],[30,4],[35,7],[44,7],[54,6],[61,4],[66,7],[74,6],[81,9],[91,4],[96,4],[102,7],[112,4],[129,6],[136,6],[143,4]]},"68":{"position":[[15,4]]},"70":{"position":[[0,1],[6,6],[13,4],[27,10],[47,5],[53,6],[60,2],[66,3],[74,1],[80,6],[107,4],[112,5],[118,6],[125,4],[130,7],[138,4],[143,6],[150,4],[155,7],[170,4],[175,5],[181,6],[188,9],[198,6],[205,9],[215,4],[220,4],[243,6],[250,4],[281,6],[288,3],[315,6],[323,7],[372,6],[379,6],[386,3],[390,6],[397,6],[404,5],[413,6],[420,4],[425,7],[433,14],[449,4],[454,5],[460,6],[467,4],[472,7],[480,4],[485,6],[492,4],[497,7],[506,14],[506,6],[513,7],[542,4],[549,14],[565,4],[570,5],[576,6],[583,9],[593,6],[600,9],[610,4],[615,4],[620,1],[622,1],[624,1],[626,1],[628,5],[634,1],[657,6],[664,4],[669,7],[677,14],[693,4],[698,5],[704,6],[711,4],[716,7],[724,4],[729,6],[736,4],[741,7],[750,14],[750,6],[757,7],[785,4],[792,14],[808,4],[813,5],[819,6],[826,9],[836,6],[843,9],[853,4],[858,4],[863,1],[865,1],[867,1],[869,1],[871,5],[877,1],[901,6],[908,4],[913,7],[926,10],[939,7],[947,4],[952,5],[958,6],[965,4],[971,7],[981,10],[992,7],[1000,4],[1005,6],[1012,4],[1017,7],[1026,10],[1061,7],[1071,14],[1071,6],[1078,7],[1088,7],[1099,10],[1116,4],[1128,10],[1141,7],[1149,4],[1154,5],[1160,6],[1167,9],[1178,7],[1188,10],[1199,6],[1206,9],[1216,4],[1221,4],[1227,10],[1262,7],[1270,1],[1272,1],[1274,1],[1276,1],[1278,5],[1284,1],[1287,7],[1298,10],[1310,1],[1322,4],[1327,6],[1340,4],[1346,4],[1351,6],[1358,7],[1380,9],[1395,4],[1400,6],[1429,4],[1434,1],[1436,1],[1438,2],[1441,6],[1460,2],[1463,6],[1489,4],[1501,6],[1508,6],[1515,3],[1519,6],[1526,6],[1533,5],[1541,3],[1558,11],[1570,14],[1586,2],[1589,4],[1594,4],[1599,6],[1606,3],[1617,4],[1634,6],[1643,6],[1671,11],[1683,14],[1699,2],[1702,4],[1707,4],[1712,6],[1719,3],[1723,3],[1734,4],[1749,4],[1760,6],[1773,4],[1789,11],[1801,14],[1817,2],[1820,4],[1825,4],[1830,6],[1837,4],[1849,4],[1861,3],[1878,11],[1890,14],[1906,2],[1909,4],[1914,4],[1919,6],[1926,3],[1937,4],[1953,6],[1962,6],[1990,11],[2002,14],[2018,2],[2021,4],[2026,4],[2031,6],[2038,3],[2042,3],[2053,4],[2067,4],[2078,6],[2091,4],[2107,11],[2119,14],[2135,2],[2138,4],[2143,4],[2148,6],[2155,4],[2167,4],[2178,3],[2189,10],[2202,7],[2210,2],[2213,4],[2219,7],[2229,10],[2240,4],[2245,6],[2252,3],[2256,3],[2261,10],[2274,7],[2288,4],[2296,7],[2311,3],[2338,3],[2352,7],[2401,5],[2407,7],[2416,5],[2425,10],[2442,4],[2453,6],[2466,4],[2476,10],[2489,7],[2497,2],[2500,4],[2506,7],[2516,10],[2527,4],[2532,6],[2539,4],[2545,10],[2558,7],[2572,4],[2580,7],[2595,3],[2622,3],[2636,7],[2685,5],[2691,7],[2700,5],[2709,10]]},"72":{"position":[[16,6],[23,4],[40,3],[49,3],[53,3],[57,4],[77,3],[84,3],[88,4],[112,3],[127,4],[147,3],[166,11],[166,7],[174,3],[179,4],[184,9],[194,6],[201,4],[206,3],[210,3],[214,4],[236,6],[243,4],[260,10],[271,4],[283,3],[303,9],[313,6],[320,4],[327,3],[349,4],[359,6],[366,3],[370,13],[384,9],[394,1],[397,9],[407,6],[414,4],[421,3],[426,6],[441,3],[461,9],[471,6],[478,4],[485,3],[507,4],[517,3],[521,13],[535,9],[549,9],[559,6],[566,4],[573,3]]},"74":{"position":[[5,6],[12,4],[38,12],[55,6],[64,6],[71,4],[76,3],[80,7],[88,3],[92,2],[96,12],[110,21],[132,5],[138,3],[142,3],[146,4],[151,6],[158,4],[164,6],[174,14],[189,3],[194,4],[201,4],[218,4],[232,12],[258,3],[263,3],[267,7],[275,3],[279,4],[285,12],[299,21],[321,6],[328,5],[334,3],[340,6],[347,6],[354,4],[359,4],[364,6],[373,4],[381,17],[399,3],[403,3],[407,5],[414,4]]},"76":{"position":[[40,19],[79,3],[85,2],[99,3],[132,3],[139,3],[151,3],[163,6],[170,4],[175,8],[184,4],[189,5],[195,4],[200,8],[209,3],[213,7],[221,8],[230,15],[246,2],[249,6],[256,4],[261,5],[267,7],[275,10],[286,11],[298,6],[305,4],[310,5],[316,7],[324,10],[335,6],[342,6],[349,4],[354,5],[360,7],[368,10],[379,8],[388,6],[395,4],[400,5],[406,6],[413,5],[419,19],[440,9],[450,5],[456,15],[475,8],[485,6],[492,5],[506,7],[516,6],[523,7],[531,5],[539,4],[547,11],[566,2],[572,2],[620,7],[628,3],[632,16],[649,5],[656,19],[709,5],[715,5],[733,3],[737,7],[745,8],[754,15],[770,4],[775,6],[782,4],[787,5],[793,7],[801,10],[812,11],[824,6],[831,4],[836,5],[842,7],[850,10],[861,6],[868,6],[875,4],[880,5],[886,7],[894,10],[905,8],[914,6],[921,4],[926,5],[932,6],[939,5],[945,19],[966,9],[976,6],[983,5],[989,15],[1008,8],[1018,6],[1025,5],[1039,7],[1050,6],[1057,7],[1065,5],[1073,4],[1081,11],[1100,2],[1106,2],[1154,6],[1161,4],[1166,16],[1183,19],[1203,5],[1245,4],[1254,3],[1258,5],[1264,13],[1291,3],[1295,7],[1303,8],[1312,15],[1328,4],[1333,6],[1340,4],[1345,5],[1351,7],[1359,10],[1370,11],[1382,6],[1389,4],[1394,5],[1400,7],[1408,10],[1419,6],[1426,6],[1433,4],[1438,5],[1444,7],[1452,10],[1463,8],[1472,6],[1479,4],[1484,5],[1490,6],[1497,5],[1503,19],[1524,9],[1534,6],[1541,5],[1547,15],[1566,8],[1576,6],[1583,5],[1597,7],[1608,6],[1615,7],[1623,5],[1631,4],[1639,11],[1658,2],[1664,2],[1712,6],[1719,17],[1740,16],[1757,19],[1777,5],[1821,17],[1845,6],[1863,6],[1870,5],[1876,10],[1939,6],[1946,10],[1974,6],[1995,3],[1999,7],[2007,8],[2016,15],[2032,4],[2037,6],[2044,4],[2049,5],[2055,7],[2063,10],[2074,11],[2086,6],[2093,4],[2098,5],[2104,7],[2112,10],[2123,6],[2130,6],[2137,4],[2142,5],[2148,7],[2156,10],[2167,8],[2176,6],[2183,4],[2188,5],[2194,6],[2201,5],[2207,19],[2228,9],[2238,6],[2245,5],[2251,15],[2270,8],[2280,6],[2287,5],[2301,7],[2312,6],[2319,7],[2327,5],[2335,4],[2343,11],[2362,2],[2368,2],[2416,6],[2423,4],[2431,16],[2448,19],[2468,5],[2512,4],[2529,6],[2547,6],[2554,4],[2559,19],[2579,5],[2585,10]]},"78":{"position":[[65,6]]},"80":{"position":[[3,7],[16,7],[34,3],[149,3],[172,3]]},"82":{"position":[[0,6],[14,3],[26,3],[30,2],[33,6],[46,4],[53,3],[59,4],[72,2],[102,6],[109,3],[124,4],[129,3],[155,3]]},"84":{"position":[[0,1],[6,4],[11,6],[21,6],[28,6],[35,3],[39,6],[46,6],[53,5],[59,6],[68,6],[85,6],[94,6],[120,3],[124,2],[129,6],[138,6],[146,3],[152,7],[176,13],[211,4],[239,3],[265,14],[281,4],[286,5],[292,6],[299,9],[309,6],[316,9],[326,4],[331,6],[338,1],[340,1],[342,1],[344,1],[346,5],[352,1],[369,8],[378,6],[387,6],[404,6],[413,6],[439,3],[443,2],[448,6],[457,2],[461,3],[465,9],[475,6],[482,3],[487,7],[511,3],[515,9],[525,6],[532,13],[567,4],[595,3],[621,14],[637,4],[642,5],[648,6],[655,9],[665,6],[672,9],[682,4],[687,6],[694,1],[696,1],[698,1],[700,1],[702,5],[708,1],[724,8],[734,10],[747,7],[755,4],[760,5],[766,6],[773,9],[784,7],[799,5],[810,3],[822,3],[834,10],[845,6],[852,9],[862,4],[867,6],[874,3],[879,10],[906,8],[920,7],[928,1],[930,1],[932,1],[934,1],[936,5],[942,1],[945,7],[956,10],[968,1],[980,4],[985,6],[998,4],[1004,4],[1009,6],[1016,7],[1035,4],[1040,6],[1069,4],[1074,1],[1076,1],[1078,2],[1081,6],[1100,2],[1103,6],[1129,4],[1141,6],[1148,3],[1152,6],[1159,2],[1162,6],[1169,6],[1176,5],[1184,3],[1201,11],[1213,14],[1229,2],[1232,4],[1237,4],[1242,6],[1249,3],[1260,4],[1275,4],[1286,6],[1299,4],[1315,11],[1327,14],[1343,2],[1346,4],[1351,4],[1356,6],[1363,4],[1375,4],[1387,2],[1396,14],[1412,2],[1415,4],[1420,4],[1425,6],[1432,2],[1442,4],[1452,7],[1460,6],[1467,3],[1471,3],[1475,7],[1483,14],[1499,2],[1502,4],[1507,4],[1512,6],[1519,7],[1534,4],[1544,3],[1548,6],[1555,14],[1571,2],[1574,4],[1579,4],[1584,6],[1591,6],[1605,4],[1615,3],[1619,3],[1623,14],[1639,2],[1642,4],[1647,4],[1652,6],[1659,3],[1670,4],[1682,3],[1693,10],[1706,7],[1714,2],[1717,4],[1723,7],[1733,10],[1744,4],[1749,6],[1756,3],[1760,3],[1765,10],[1778,7],[1792,4],[1800,7],[1815,3],[1842,3],[1856,7],[1905,5],[1911,7],[1920,5],[1929,10],[1946,4],[1957,6],[1970,4],[1980,10],[1993,7],[2001,2],[2004,4],[2010,7],[2020,10],[2031,4],[2036,6],[2043,4],[2049,10],[2062,7],[2076,4],[2084,7],[2099,3],[2126,3],[2140,7],[2189,5],[2195,7],[2204,5],[2213,10]]},"87":{"position":[[0,6],[7,3],[11,6],[18,2],[21,6],[28,6],[35,4],[40,4],[45,5],[59,3],[63,3],[67,3],[73,10],[84,6],[91,6],[98,11],[110,8],[122,9],[122,6],[129,2],[134,5],[143,5],[157,3],[176,3],[181,6],[190,2],[198,4],[208,3],[239,19],[261,3],[265,15],[283,3],[295,8],[308,4],[313,10],[326,4],[336,3],[348,14],[378,7],[388,20],[411,5],[417,20],[440,5],[472,3],[476,9],[488,3],[498,4],[504,5],[531,3],[536,2],[549,4],[557,7],[566,5],[574,4],[581,7],[590,3],[596,3],[616,5],[634,3],[638,9],[648,9],[661,3],[671,4],[677,5],[683,9],[711,5],[736,3],[741,2],[754,4],[762,7],[771,5],[779,4],[786,7],[795,5],[803,5],[811,7],[820,3],[826,3],[847,5],[853,4],[872,3],[876,9],[886,5],[892,4],[897,9],[910,3],[920,4],[926,5],[932,9],[957,4],[962,5],[970,4],[983,3],[988,2],[1001,4],[1009,7],[1018,5],[1026,4],[1033,7],[1042,4],[1049,4],[1056,7],[1065,3],[1071,3],[1086,3],[1095,3],[1099,2],[1104,3],[1108,2],[1113,7],[1122,2],[1127,2],[1137,3],[1144,5],[1158,3],[1170,4],[1188,3],[1192,4],[1206,3],[1222,3],[1226,5],[1236,3],[1242,3],[1252,12],[1271,5],[1281,4],[1288,3],[1292,12],[1322,3],[1333,7],[1347,4],[1359,4],[1364,2],[1367,6],[1374,3],[1378,3],[1384,10],[1395,6],[1402,6],[1409,11],[1421,8],[1433,9],[1433,6],[1440,2],[1445,5],[1454,5],[1475,3],[1479,9],[1489,9],[1502,3],[1512,4],[1518,5],[1524,9],[1552,5],[1577,3],[1582,2],[1595,4],[1603,7],[1612,5],[1620,4],[1627,7],[1636,5],[1644,5],[1652,7],[1661,3],[1667,3],[1680,3],[1687,5],[1701,3],[1713,4],[1731,3],[1735,4],[1749,3],[1765,3],[1769,5],[1779,3],[1785,3],[1795,12],[1814,5],[1824,4],[1831,3],[1835,12],[1858,3],[1862,3],[1866,3],[1872,10],[1883,6],[1890,6],[1897,11],[1909,8],[1921,9],[1921,6],[1928,2],[1933,5],[1942,5],[1956,3],[1975,3],[1980,6],[1989,2],[1997,4],[2007,2],[2018,4],[2023,2],[2028,2],[2050,19],[2072,2],[2075,15],[2093,2],[2104,8],[2116,2],[2128,5],[2139,2],[2149,8],[2184,10],[2197,5],[2208,3],[2220,14],[2250,7],[2260,20],[2283,5],[2289,20],[2312,5],[2344,3],[2348,9],[2360,3],[2370,4],[2376,5],[2403,3],[2408,2],[2421,4],[2429,7],[2438,5],[2446,4],[2453,7],[2462,3],[2468,3],[2488,5],[2506,3],[2510,9],[2520,9],[2533,3],[2543,4],[2549,5],[2555,9],[2583,5],[2608,3],[2613,2],[2626,4],[2634,7],[2643,5],[2651,4],[2658,7],[2667,5],[2675,5],[2683,7],[2692,3],[2698,3],[2719,5],[2725,4],[2744,3],[2748,9],[2758,5],[2764,4],[2769,9],[2782,3],[2792,4],[2798,5],[2804,9],[2829,4],[2834,5],[2842,4],[2855,3],[2860,2],[2873,4],[2881,7],[2890,5],[2898,4],[2905,7],[2914,4],[2921,4],[2928,7],[2937,3],[2943,3],[2958,3],[2967,3],[2971,2],[2976,3],[2980,2],[2985,7],[2994,2],[2999,2],[3009,3],[3016,5],[3030,3],[3042,4],[3060,3],[3064,4],[3078,3],[3094,3],[3098,5],[3108,3],[3114,3],[3124,12],[3143,5],[3153,4],[3160,3],[3164,12],[3194,3],[3198,3],[3202,3],[3208,10],[3219,6],[3226,6],[3233,11],[3245,8],[3257,9],[3257,6],[3264,2],[3269,5],[3278,5],[3299,3],[3303,9],[3313,9],[3326,3],[3336,4],[3342,5],[3348,9],[3376,5],[3401,3],[3406,2],[3419,4],[3427,7],[3436,5],[3444,4],[3451,7],[3460,5],[3468,5],[3476,7],[3485,3],[3491,3],[3504,3],[3511,5],[3525,3],[3537,4],[3555,3],[3559,4],[3573,3],[3589,3],[3593,5],[3603,3],[3609,3],[3619,12],[3638,5],[3648,4],[3655,3],[3659,12],[3678,8],[3703,3],[3707,3],[3711,3],[3717,10],[3728,6],[3735,6],[3742,11],[3754,8],[3766,9],[3766,6],[3773,2],[3778,5],[3787,5],[3801,3],[3820,3],[3825,6],[3834,2],[3842,4],[3855,6],[3874,19],[3896,7],[3904,15],[3922,7],[3938,8],[3950,6],[3966,5],[3992,10],[4005,5],[4016,3],[4028,14],[4058,7],[4068,20],[4091,5],[4097,20],[4120,5],[4152,3],[4156,9],[4168,3],[4178,4],[4184,5],[4211,3],[4216,2],[4229,4],[4237,7],[4246,5],[4254,4],[4261,7],[4270,3],[4276,3],[4296,5],[4314,3],[4318,9],[4328,9],[4341,3],[4351,4],[4357,5],[4363,9],[4391,5],[4416,3],[4421,2],[4434,4],[4442,7],[4451,5],[4459,4],[4466,7],[4475,5],[4483,5],[4491,7],[4500,3],[4506,3],[4527,5],[4533,4],[4552,3],[4556,9],[4566,5],[4572,4],[4577,9],[4590,3],[4600,4],[4606,5],[4612,9],[4637,4],[4642,5],[4650,4],[4663,3],[4668,2],[4681,4],[4689,7],[4698,5],[4706,4],[4713,7],[4722,4],[4729,4],[4736,7],[4745,3],[4751,3],[4766,3],[4775,3],[4779,2],[4784,3],[4788,2],[4793,7],[4802,2],[4807,2],[4817,3],[4824,5],[4838,3],[4850,4],[4868,3],[4872,4],[4886,3],[4902,3],[4906,5],[4916,3],[4922,3],[4932,12],[4951,5],[4961,4],[4968,3],[4972,12],[5002,3],[5006,3],[5010,3],[5016,10],[5027,6],[5034,6],[5041,11],[5053,8],[5065,9],[5065,6],[5072,2],[5077,5],[5086,5],[5102,3],[5107,6],[5116,2],[5124,4],[5137,6],[5156,19],[5178,7],[5186,15],[5204,7],[5226,3],[5230,9],[5240,9],[5253,3],[5263,4],[5269,5],[5275,9],[5303,5],[5328,3],[5333,2],[5346,4],[5354,7],[5363,5],[5371,4],[5378,7],[5387,5],[5395,5],[5403,7],[5412,3],[5418,3],[5431,3],[5438,5],[5452,3],[5464,4],[5482,3],[5486,4],[5500,3],[5516,3],[5520,5],[5530,3],[5536,3],[5546,12],[5565,5],[5575,4],[5582,3],[5586,12],[5606,6],[5613,5],[5619,3],[5623,6],[5632,6],[5639,11],[5652,9],[5652,6],[5659,2],[5665,5],[5679,3],[5685,5],[5691,3],[5695,16],[5714,3],[5718,16],[5741,3],[5760,3],[5765,6],[5774,2],[5782,4],[5792,3],[5823,16],[5840,22],[5863,3],[5867,8],[5878,16],[5895,18],[5914,3],[5918,8],[5937,8],[5950,4],[5955,16],[5972,11],[5984,4],[5996,3],[6008,16],[6025,14],[6056,5],[6062,3],[6066,20],[6089,3],[6093,16],[6110,20],[6134,20],[6155,23],[6179,5],[6187,20],[6208,23],[6232,5],[6240,16],[6257,10],[6268,20],[6307,3],[6311,5],[6317,3],[6321,3],[6327,10],[6338,6],[6345,6],[6353,16],[6374,16],[6416,3],[6420,17],[6439,5],[6446,3],[6459,5],[6466,5],[6493,3],[6498,2],[6511,4],[6519,6],[6526,3],[6530,7],[6539,5],[6551,5],[6559,6],[6566,3],[6570,7],[6579,3],[6589,3],[6611,5],[6629,3],[6633,17],[6651,9],[6661,5],[6669,5],[6676,3],[6689,5],[6696,5],[6702,9],[6730,5],[6755,3],[6760,2],[6773,4],[6781,6],[6788,3],[6792,7],[6801,5],[6813,5],[6821,6],[6828,3],[6832,7],[6841,5],[6847,8],[6864,5],[6870,8],[6883,6],[6890,3],[6894,7],[6903,3],[6913,3],[6936,5],[6942,4],[6961,3],[6965,17],[6983,5],[6989,4],[6994,9],[7006,5],[7013,3],[7026,5],[7033,5],[7039,9],[7064,4],[7069,5],[7077,4],[7090,3],[7095,2],[7108,4],[7116,6],[7123,3],[7127,7],[7136,5],[7148,5],[7156,6],[7163,3],[7167,7],[7176,5],[7182,7],[7198,5],[7204,7],[7216,6],[7223,3],[7227,7],[7236,3],[7246,3],[7263,3],[7272,5],[7278,3],[7282,2],[7287,3],[7291,5],[7300,6],[7307,3],[7311,7],[7320,2],[7329,2],[7339,3],[7346,13],[7368,3],[7380,4],[7398,12],[7417,5],[7427,4],[7434,3],[7438,13],[7458,3],[7462,12],[7488,3],[7504,3],[7508,5],[7518,3],[7524,3],[7531,3],[7535,12],[7566,6],[7573,5],[7579,3],[7583,6],[7592,6],[7599,11],[7612,9],[7612,6],[7619,2],[7625,5],[7639,3],[7643,5],[7649,3],[7653,3],[7659,10],[7670,6],[7677,6],[7688,16],[7731,3],[7735,17],[7753,9],[7763,5],[7771,5],[7778,3],[7791,5],[7798,5],[7804,9],[7832,5],[7857,3],[7862,2],[7875,4],[7883,6],[7890,3],[7894,7],[7903,5],[7915,5],[7923,6],[7930,3],[7934,7],[7943,5],[7949,8],[7966,5],[7972,8],[7985,6],[7992,3],[7996,7],[8005,3],[8015,3],[8030,3],[8037,13],[8059,3],[8071,4],[8086,3],[8090,13],[8110,3],[8114,12],[8140,3],[8156,3],[8160,5],[8170,3],[8176,3],[8183,3],[8187,12],[8208,6],[8215,5],[8221,3],[8225,6],[8234,6],[8241,11],[8254,9],[8254,6],[8261,2],[8267,5],[8281,3],[8287,5],[8293,3],[8297,16],[8316,3],[8320,16],[8343,3],[8362,3],[8367,6],[8376,2],[8384,4],[8394,3],[8425,16],[8442,22],[8465,3],[8469,8],[8480,16],[8497,18],[8516,3],[8520,8],[8539,8],[8552,4],[8557,16],[8574,11],[8586,4],[8598,3],[8610,16],[8627,14],[8658,5],[8664,3],[8668,20],[8691,3],[8695,16],[8712,20],[8736,20],[8757,23],[8781,5],[8789,20],[8810,23],[8834,5],[8842,16],[8859,10],[8870,20],[8909,3],[8913,5],[8919,3],[8923,3],[8929,10],[8940,6],[8947,6],[8955,16],[8976,16],[9018,3],[9022,14],[9038,5],[9045,3],[9058,5],[9065,5],[9092,3],[9097,2],[9110,4],[9118,6],[9125,3],[9129,7],[9138,5],[9150,5],[9158,6],[9165,3],[9169,7],[9178,3],[9188,3],[9214,3],[9225,3],[9229,5],[9238,11],[9259,8],[9304,6],[9311,17],[9329,15],[9345,4],[9368,5],[9386,3],[9390,14],[9405,9],[9415,5],[9423,5],[9430,3],[9443,5],[9450,5],[9456,9],[9484,5],[9509,3],[9514,2],[9527,4],[9535,6],[9542,3],[9546,7],[9555,5],[9567,5],[9575,6],[9582,3],[9586,7],[9595,5],[9601,8],[9618,5],[9624,8],[9637,6],[9644,3],[9648,7],[9657,3],[9667,3],[9694,6],[9701,17],[9719,15],[9735,4],[9759,5],[9765,4],[9784,3],[9788,14],[9803,5],[9809,4],[9814,9],[9826,5],[9833,3],[9846,5],[9853,5],[9859,9],[9884,4],[9889,5],[9897,4],[9910,3],[9915,2],[9928,4],[9936,6],[9943,3],[9947,7],[9956,5],[9968,5],[9976,6],[9983,3],[9987,7],[9996,5],[10002,7],[10018,5],[10024,7],[10036,6],[10043,3],[10047,7],[10056,3],[10066,3],[10093,6],[10100,17],[10118,15],[10134,4],[10152,3],[10177,3],[10181,10],[10194,10],[10205,2],[10221,6],[10228,3],[10232,7],[10241,2],[10250,2],[10264,3],[10271,10],[10290,3],[10302,4],[10333,3],[10337,10],[10354,3],[10358,8],[10379,17],[10400,3],[10416,3],[10420,5],[10430,3],[10436,3],[10443,3],[10447,8],[10458,12],[10472,4],[10478,9],[10494,6],[10501,3],[10505,7],[10514,3],[10526,6],[10533,3],[10537,7],[10546,9],[10561,9],[10592,6],[10599,5],[10605,3],[10609,6],[10618,6],[10625,11],[10638,9],[10638,6],[10645,2],[10651,5],[10665,3],[10669,5],[10675,3],[10679,3],[10685,10],[10696,6],[10703,6],[10724,3],[10728,14],[10743,9],[10753,5],[10761,5],[10768,3],[10781,5],[10788,5],[10794,9],[10822,5],[10847,3],[10852,2],[10865,4],[10873,6],[10880,3],[10884,7],[10893,5],[10905,5],[10913,6],[10920,3],[10924,7],[10933,5],[10939,8],[10956,5],[10962,8],[10975,6],[10982,3],[10986,7],[10995,3],[11005,3],[11052,3],[11063,3],[11067,5],[11076,11],[11097,8],[11121,6],[11128,17],[11146,15],[11162,4],[11178,3],[11185,10],[11204,3],[11216,4],[11234,3],[11238,8],[11259,17],[11280,3],[11296,3],[11300,5],[11310,3],[11316,3],[11323,3],[11327,10],[11340,11],[11352,4],[11360,3],[11364,8],[11376,12],[11390,4],[11396,9],[11412,6],[11419,3],[11423,7],[11432,3],[11444,6],[11451,3],[11455,7],[11464,9],[11479,9]]},"89":{"position":[[12,3],[25,3],[45,10],[58,13],[87,3],[94,6],[101,4],[106,4],[111,5],[124,6],[149,3],[153,3],[157,3],[163,10],[174,6],[181,6],[188,11],[200,8],[212,9],[212,6],[219,2],[224,5],[233,5],[265,3],[269,3],[273,3],[279,15],[295,6],[310,3],[317,3],[321,8],[332,3],[336,9],[346,3],[351,8],[360,7],[370,7],[379,5],[387,2],[399,6],[406,5],[412,3],[416,6],[425,6],[432,11],[445,9],[445,6],[452,2],[458,5],[485,3],[489,5],[495,3],[499,3],[505,10],[516,6],[523,6],[537,3],[541,5],[547,3],[551,3],[557,15],[573,6],[594,5],[600,3],[604,8],[615,3],[619,17],[637,3],[643,3],[648,11],[660,5],[668,8],[680,6],[687,3],[691,7],[700,5],[712,5],[727,6],[734,5],[740,3],[744,6],[753,6],[760,11],[773,9],[773,6],[780,2],[786,5],[813,3],[817,5],[823,3],[827,3],[833,10],[844,6],[851,6],[865,3],[869,5],[875,3],[879,3],[885,15],[901,6],[922,3],[926,14],[941,3],[946,10],[957,8],[971,3],[976,11],[988,5],[996,8],[1008,6],[1015,3],[1019,7],[1028,5],[1040,5]]}}}],["一一列举",{"_index":427,"t":{"61":{"position":[[11,4]]}}}],["一个",{"_index":69,"t":{"8":{"position":[[125,2]]},"14":{"position":[[2,2]]},"18":{"position":[[1014,2],[2134,2],[3322,2]]},"20":{"position":[[21,2]]},"24":{"position":[[848,2],[857,2],[862,2],[2545,2],[2636,2],[2907,2],[3215,2],[3551,2],[3622,2],[4993,2],[5441,2],[5848,2],[6311,2]]},"59":{"position":[[1044,2],[1756,2],[2038,2]]},"61":{"position":[[126,2]]},"63":{"position":[[1801,2],[2442,2]]},"66":{"position":[[125,2]]},"68":{"position":[[9,2]]},"70":{"position":[[25,2],[294,2],[357,2],[1371,2],[1425,2],[2322,2],[2606,2]]},"72":{"position":[[34,2]]},"74":{"position":[[2,2],[25,2]]},"76":{"position":[[18,2],[27,2]]},"84":{"position":[[1029,2],[1065,2],[1826,2],[2110,2]]},"87":{"position":[[56,2],[624,2],[1307,2],[1855,2],[2496,2],[3179,2],[3700,2],[4304,2],[4987,2],[6619,2],[7551,2],[9297,2],[9376,2],[9687,2],[10086,2],[10373,2],[10577,2],[11025,2],[11253,2]]}}}],["一些",{"_index":114,"t":{"10":{"position":[[356,2]]},"18":{"position":[[524,2]]},"24":{"position":[[45,2],[2418,2],[2447,2]]},"41":{"position":[[2147,2]]},"43":{"position":[[6,2]]},"63":{"position":[[359,2],[920,2],[1507,2],[2184,2],[2825,2]]},"70":{"position":[[261,2]]},"80":{"position":[[89,2]]},"89":{"position":[[19,2]]}}}],["一句",{"_index":506,"t":{"76":{"position":[[91,2]]}}}],["一定",{"_index":367,"t":{"41":{"position":[[892,2]]},"61":{"position":[[118,2]]}}}],["一小部分",{"_index":439,"t":{"61":{"position":[[196,4]]}}}],["一样",{"_index":492,"t":{"74":{"position":[[19,2]]}}}],["一种",{"_index":96,"t":{"10":{"position":[[219,2]]}}}],["一致",{"_index":600,"t":{"89":{"position":[[139,2]]}}}],["三个",{"_index":37,"t":{"4":{"position":[[22,2]]}}}],["上传",{"_index":230,"t":{"24":{"position":[[2553,2],[2634,2],[2653,2],[2905,2],[2924,2],[3213,2],[3232,2],[5352,2]]}}}],["上述",{"_index":106,"t":{"10":{"position":[[313,2]]},"24":{"position":[[2416,2]]}}}],["上限",{"_index":355,"t":{"41":{"position":[[769,2]]}}}],["下文",{"_index":3,"t":{"2":{"position":[[19,2],[44,2]]},"59":{"position":[[357,2],[709,2],[888,2]]},"61":{"position":[[191,2]]},"84":{"position":[[363,2],[718,2],[900,2]]}}}],["下面",{"_index":139,"t":{"18":{"position":[[64,2]]}}}],["不会",{"_index":386,"t":{"41":{"position":[[1345,2]]},"61":{"position":[[6,2]]}}}],["不再",{"_index":150,"t":{"18":{"position":[[176,2],[3350,2]]}}}],["不同",{"_index":15,"t":{"2":{"position":[[114,2]]},"24":{"position":[[5304,2]]},"87":{"position":[[3852,2],[5134,2]]}}}],["不够",{"_index":587,"t":{"87":{"position":[[2163,2]]}}}],["不得已",{"_index":117,"t":{"10":{"position":[[363,3]]}}}],["不必要",{"_index":234,"t":{"24":{"position":[[2647,3],[2918,3],[3226,3]]}}}],["不是",{"_index":239,"t":{"24":{"position":[[2818,2],[3108,2],[3422,2]]}}}],["不用",{"_index":589,"t":{"87":{"position":[[2178,2]]}}}],["不要",{"_index":532,"t":{"78":{"position":[[40,2]]},"87":{"position":[[9199,2],[11037,2]]}}}],["不足",{"_index":322,"t":{"41":{"position":[[470,2]]}}}],["与其",{"_index":436,"t":{"61":{"position":[[172,2]]}}}],["专属",{"_index":203,"t":{"24":{"position":[[48,2],[2449,2]]}}}],["两个",{"_index":79,"t":{"8":{"position":[[245,2],[290,2]]},"10":{"position":[[315,2]]},"16":{"position":[[54,2]]},"41":{"position":[[1018,2]]},"70":{"position":[[96,2]]}}}],["中",{"_index":33,"t":{"2":{"position":[[245,1]]},"6":{"position":[[96,1]]},"8":{"position":[[105,1]]},"14":{"position":[[40,1]]},"16":{"position":[[12,1],[40,1],[58,1]]},"18":{"position":[[56,1],[169,1],[1008,1],[2128,1],[3314,1]]},"20":{"position":[[1280,1]]},"22":{"position":[[4,1]]},"24":{"position":[[2182,1],[2552,1],[4394,1],[4991,1],[5017,1],[5258,1],[5325,1]]},"32":{"position":[[16,1],[67,1]]},"39":{"position":[[79,1]]},"41":{"position":[[60,1],[394,1],[2065,1]]},"43":{"position":[[3,1]]},"45":{"position":[[189,1]]},"51":{"position":[[2,1]]},"55":{"position":[[7,1],[83,1]]},"59":{"position":[[795,1]]},"63":{"position":[[1795,1],[2436,1]]},"72":{"position":[[31,1],[253,1]]},"74":{"position":[[222,1]]},"76":{"position":[[1249,1],[1933,1]]},"78":{"position":[[16,1]]},"80":{"position":[[211,1]]},"84":{"position":[[804,1]]},"87":{"position":[[230,1],[1239,1],[1342,1],[1782,1],[3111,1],[3606,1],[4919,1],[5533,1],[5814,1],[7521,1],[8173,1],[8416,1],[9209,1],[10433,1],[11047,1],[11313,1]]},"89":{"position":[[4,1]]}}}],["为准",{"_index":486,"t":{"72":{"position":[[139,2]]}}}],["主动",{"_index":257,"t":{"24":{"position":[[5350,2]]},"59":{"position":[[248,2],[601,2]]},"70":{"position":[[1654,2],[1973,2]]},"84":{"position":[[251,2],[607,2]]}}}],["主要",{"_index":38,"t":{"4":{"position":[[24,2]]},"6":{"position":[[76,2],[129,2]]},"8":{"position":[[162,2],[227,2]]},"10":{"position":[[100,2]]}}}],["之一",{"_index":199,"t":{"24":{"position":[[23,2]]}}}],["之前",{"_index":296,"t":{"41":{"position":[[238,2]]}}}],["之后",{"_index":294,"t":{"41":{"position":[[227,2]]}}}],["也好",{"_index":509,"t":{"76":{"position":[[117,2],[159,2],[723,2],[1280,2],[1889,2],[2598,2]]}}}],["了解",{"_index":541,"t":{"80":{"position":[[14,2],[51,2]]}}}],["事件",{"_index":49,"t":{"6":{"position":[[103,2],[148,2]]},"8":{"position":[[68,2],[133,2],[183,2]]},"10":{"position":[[260,2]]},"20":{"position":[[29,2],[38,2],[1278,2]]},"39":{"position":[[38,2]]},"41":{"position":[[399,2],[2055,2]]},"45":{"position":[[154,2]]},"49":{"position":[[67,2]]},"76":{"position":[[29,2],[70,2],[687,2],[1220,2],[1794,2],[2485,2]]},"82":{"position":[[67,2],[134,2]]},"87":{"position":[[466,2],[523,2],[546,2],[612,2],[631,2],[704,2],[727,2],[751,2],[842,2],[869,2],[953,2],[998,2],[1472,2],[1545,2],[1568,2],[1592,2],[2338,2],[2395,2],[2418,2],[2484,2],[2503,2],[2576,2],[2599,2],[2623,2],[2714,2],[2741,2],[2825,2],[2870,2],[3296,2],[3369,2],[3392,2],[3416,2],[4146,2],[4203,2],[4226,2],[4292,2],[4311,2],[4384,2],[4407,2],[4431,2],[4522,2],[4549,2],[4633,2],[4678,2],[5223,2],[5296,2],[5319,2],[5343,2],[6410,2],[6485,2],[6508,2],[6607,2],[6626,2],[6723,2],[6746,2],[6770,2],[6931,2],[6958,2],[7060,2],[7105,2],[7728,2],[7825,2],[7848,2],[7872,2],[9012,2],[9084,2],[9107,2],[9364,2],[9383,2],[9477,2],[9500,2],[9524,2],[9754,2],[9781,2],[9880,2],[9925,2],[10721,2],[10815,2],[10838,2],[10862,2]]}}}],["事情",{"_index":556,"t":{"80":{"position":[[120,2]]}}}],["产生",{"_index":328,"t":{"41":{"position":[[500,2]]}}}],["仅",{"_index":85,"t":{"8":{"position":[[273,1]]},"41":{"position":[[396,1]]}}}],["介绍",{"_index":29,"t":{"2":{"position":[[231,2]]},"66":{"position":[[4,2]]}}}],["仍然",{"_index":321,"t":{"41":{"position":[[468,2]]}}}],["代码",{"_index":267,"t":{"32":{"position":[[108,2]]},"76":{"position":[[7,2]]}}}],["代表",{"_index":273,"t":{"37":{"position":[[19,2]]},"76":{"position":[[698,2],[1231,2],[1805,2],[2496,2]]}}}],["以及",{"_index":265,"t":{"32":{"position":[[23,2]]},"39":{"position":[[25,2]]},"87":{"position":[[451,2],[2323,2],[4131,2],[6294,2],[8896,2]]}}}],["以外",{"_index":219,"t":{"24":{"position":[[2434,2]]}}}],["任何",{"_index":590,"t":{"87":{"position":[[9202,2],[9255,2],[11040,2],[11093,2]]}}}],["任务",{"_index":593,"t":{"87":{"position":[[9292,2],[9682,2],[10081,2],[11020,2]]}}}],["会",{"_index":98,"t":{"10":{"position":[[227,1],[300,1]]},"24":{"position":[[28,1]]},"32":{"position":[[3,1]]},"41":{"position":[[277,1],[691,1],[1377,1],[1540,1],[2104,1]]},"59":{"position":[[1766,1],[2048,1]]},"61":{"position":[[143,1],[193,1]]},"63":{"position":[[422,1],[983,1],[1570,1],[2255,1],[2893,1]]},"70":{"position":[[306,1],[2332,1],[2616,1]]},"76":{"position":[[102,1],[1851,1],[2535,1]]},"80":{"position":[[82,1],[126,1],[177,1],[196,1],[225,1]]},"84":{"position":[[1836,1],[2120,1]]},"87":{"position":[[221,1],[723,1],[1163,1],[1199,1],[1564,1],[1706,1],[1742,1],[2015,1],[2595,1],[3035,1],[3071,1],[3388,1],[3530,1],[3566,1],[4403,1],[4843,1],[4879,1],[5315,1],[5457,1],[5493,1],[5805,1],[6742,1],[7373,1],[7477,1],[7844,1],[8064,1],[8129,1],[8407,1],[9496,1],[10295,1],[10369,1],[10834,1],[11209,1],[11249,1]]}}}],["似乎",{"_index":583,"t":{"87":{"position":[[2032,2]]}}}],["但是",{"_index":317,"t":{"41":{"position":[[456,2]]},"87":{"position":[[2159,2]]}}}],["住",{"_index":457,"t":{"70":{"position":[[234,1]]}}}],["体",{"_index":569,"t":{"87":{"position":[[525,1],[706,1],[955,1],[1547,1],[2397,1],[2578,1],[2827,1],[3371,1],[4205,1],[4386,1],[4635,1],[5298,1],[6487,1],[6725,1],[7062,1],[7827,1],[9086,1],[9208,1],[9479,1],[9882,1],[10817,1],[11046,1]]}}}],["体现",{"_index":76,"t":{"8":{"position":[[229,2]]},"10":{"position":[[102,2]]}}}],["作为",{"_index":43,"t":{"6":{"position":[[48,2]]},"8":{"position":[[48,2],[297,2]]},"10":{"position":[[87,2]]},"14":{"position":[[0,2]]},"18":{"position":[[3339,2]]},"24":{"position":[[9,2],[2517,2],[2575,2],[3638,2],[5278,2]]},"45":{"position":[[55,2],[138,2]]},"47":{"position":[[45,2]]},"49":{"position":[[51,2]]},"57":{"position":[[45,2],[104,2]]},"76":{"position":[[1839,2],[2523,2]]},"82":{"position":[[51,2],[121,2]]}}}],["作用",{"_index":46,"t":{"6":{"position":[[78,2]]},"41":{"position":[[2174,2]]}}}],["作用域",{"_index":425,"t":{"59":{"position":[[1794,3],[1824,3],[2076,3],[2106,3]]},"70":{"position":[[2360,3],[2390,3],[2644,3],[2674,3]]},"84":{"position":[[1864,3],[1894,3],[2148,3],[2178,3]]}}}],["你好",{"_index":507,"t":{"76":{"position":[[94,2],[136,2],[155,2],[501,2],[1034,2],[1592,2],[2296,2]]}}}],["使用",{"_index":42,"t":{"6":{"position":[[40,2]]},"8":{"position":[[40,2],[310,2]]},"10":{"position":[[381,2]]},"18":{"position":[[283,2],[1077,2],[1661,2],[2197,2],[2781,2]]},"20":{"position":[[11,2]]},"24":{"position":[[5434,2],[5841,2],[6304,2]]},"32":{"position":[[72,2],[82,2],[106,2]]},"39":{"position":[[134,2]]},"41":{"position":[[1059,2],[1380,2]]},"43":{"position":[[8,2]]},"45":{"position":[[4,2],[47,2],[81,2],[130,2],[175,2],[195,2]]},"47":{"position":[[37,2]]},"49":{"position":[[43,2]]},"55":{"position":[[16,2],[50,2],[87,2]]},"57":{"position":[[37,2],[101,2]]},"59":{"position":[[79,2],[191,2],[205,2],[395,2],[544,2],[558,2],[796,2],[811,2],[1042,2],[1127,2],[1223,2],[1239,2],[1783,2],[1895,2],[2065,2]]},"63":{"position":[[118,2],[680,2],[1262,2],[1864,2],[2505,2]]},"66":{"position":[[6,2]]},"70":{"position":[[240,2],[355,2],[1369,2],[1555,2],[1631,2],[1668,2],[1770,2],[1786,2],[1875,2],[1950,2],[1987,2],[2088,2],[2104,2],[2349,2],[2463,2],[2633,2]]},"72":{"position":[[151,2],[337,2],[345,2],[495,2],[503,2]]},"76":{"position":[[1965,2]]},"82":{"position":[[43,2],[118,2]]},"84":{"position":[[82,2],[194,2],[208,2],[401,2],[550,2],[564,2],[805,2],[820,2],[1027,2],[1198,2],[1296,2],[1312,2],[1853,2],[1967,2],[2137,2]]},"87":{"position":[[195,2],[1994,2],[3839,2],[5121,2],[5779,2],[8381,2]]},"89":{"position":[[134,2]]}}}],["使用手册",{"_index":552,"t":{"80":{"position":[[108,4]]}}}],["例",{"_index":152,"t":{"18":{"position":[[208,1],[1155,1],[2275,1]]},"59":{"position":[[1120,1],[1320,1],[1619,1]]},"63":{"position":[[23,1],[1218,1],[1942,1],[2583,1]]},"70":{"position":[[1548,1],[1868,1],[2185,1]]},"84":{"position":[[1191,1],[1393,1],[1689,1]]},"87":{"position":[[3692,1]]},"89":{"position":[[91,1]]}}}],["例如",{"_index":93,"t":{"10":{"position":[[162,2],[257,2]]},"41":{"position":[[1396,2]]},"59":{"position":[[1066,2]]},"70":{"position":[[276,2],[1497,2]]},"84":{"position":[[1137,2]]},"87":{"position":[[167,2],[1214,2],[1757,2],[1966,2],[3086,2],[3581,2],[3811,2],[4894,2],[5508,2],[5751,2],[7496,2],[8148,2],[8353,2],[9222,2],[10408,2],[11060,2],[11288,2]]}}}],["依旧",{"_index":118,"t":{"10":{"position":[[373,2]]},"41":{"position":[[440,2]]}}}],["依赖",{"_index":62,"t":{"6":{"position":[[158,2]]},"8":{"position":[[84,2],[198,2],[252,2],[276,2],[284,2],[307,2]]},"10":{"position":[[111,2]]},"57":{"position":[[82,2]]},"59":{"position":[[15,2],[107,2],[241,2],[258,2],[423,2],[594,2],[611,2],[1007,2],[1760,2],[2042,2]]},"70":{"position":[[87,2],[103,2],[1334,2],[2326,2],[2610,2]]},"76":{"position":[[1931,2]]},"82":{"position":[[99,2],[153,2]]},"84":{"position":[[18,2],[110,2],[244,2],[261,2],[429,2],[600,2],[617,2],[992,2],[1830,2],[2114,2]]},"87":{"position":[[2016,2]]}}}],["便",{"_index":191,"t":{"20":{"position":[[43,1],[1285,1]]}}}],["便捷",{"_index":103,"t":{"10":{"position":[[267,2]]},"89":{"position":[[29,2]]}}}],["便是",{"_index":194,"t":{"20":{"position":[[1268,2]]}}}],["保",{"_index":467,"t":{"70":{"position":[[368,1]]}}}],["保持",{"_index":456,"t":{"70":{"position":[[232,2],[268,2]]}}}],["保证",{"_index":314,"t":{"41":{"position":[[444,2]]},"80":{"position":[[129,2],[147,2]]}}}],["信息",{"_index":146,"t":{"18":{"position":[[156,2],[393,2],[1265,2],[2385,2]]},"39":{"position":[[53,2]]},"41":{"position":[[100,2],[614,2],[1323,2],[1386,2]]},"63":{"position":[[228,2],[789,2],[1376,2],[2052,2],[2693,2]]},"87":{"position":[[1092,2],[2964,2],[4772,2],[7269,2],[10158,2]]}}}],["修改",{"_index":487,"t":{"72":{"position":[[227,2]]}}}],["借助",{"_index":99,"t":{"10":{"position":[[228,2]]},"70":{"position":[[64,2]]}}}],["值",{"_index":572,"t":{"87":{"position":[[861,1],[2733,1],[4541,1],[6950,1],[9773,1]]}}}],["假设",{"_index":503,"t":{"76":{"position":[[74,2]]},"87":{"position":[[9286,2],[9676,2],[10075,2],[11014,2]]}}}],["做",{"_index":247,"t":{"24":{"position":[[3764,1],[3772,1],[3970,1],[4239,1]]},"61":{"position":[[21,1],[204,1]]}}}],["做到",{"_index":241,"t":{"24":{"position":[[3545,2]]}}}],["像",{"_index":491,"t":{"74":{"position":[[0,1]]}}}],["允许",{"_index":411,"t":{"59":{"position":[[101,2],[417,2]]},"84":{"position":[[104,2],[423,2]]}}}],["元素",{"_index":201,"t":{"24":{"position":[[34,2],[53,2],[70,2],[5282,2]]}}}],["先",{"_index":406,"t":{"55":{"position":[[12,1]]}}}],["免除",{"_index":598,"t":{"89":{"position":[[34,2]]}}}],["全面",{"_index":221,"t":{"24":{"position":[[2460,2]]},"80":{"position":[[204,2]]}}}],["全面性",{"_index":558,"t":{"80":{"position":[[139,3]]}}}],["关系",{"_index":75,"t":{"8":{"position":[[225,2]]},"61":{"position":[[187,2]]}}}],["关闭",{"_index":292,"t":{"41":{"position":[[201,2],[388,2]]},"87":{"position":[[1211,2],[1246,2],[1754,2],[1789,2],[3083,2],[3118,2],[3578,2],[3613,2],[4891,2],[4926,2],[5505,2],[5540,2],[7493,2],[7528,2],[8145,2],[8180,2],[10405,2],[10440,2],[11285,2],[11320,2]]}}}],["兴趣",{"_index":300,"t":{"41":{"position":[[255,2]]}}}],["其中",{"_index":193,"t":{"20":{"position":[[1256,2]]}}}],["其他",{"_index":172,"t":{"18":{"position":[[616,2],[1445,2],[2565,2]]},"20":{"position":[[1281,2]]},"24":{"position":[[3782,2]]},"41":{"position":[[0,2]]},"55":{"position":[[63,2]]},"72":{"position":[[145,2]]},"87":{"position":[[453,2],[1151,2],[1694,2],[2325,2],[3023,2],[3518,2],[4133,2],[4831,2],[5445,2],[6296,2],[7361,2],[8052,2],[8898,2],[10283,2],[11197,2]]}}}],["其次",{"_index":567,"t":{"80":{"position":[[191,2]]}}}],["具体",{"_index":544,"t":{"80":{"position":[[53,2]]},"87":{"position":[[626,2],[1470,2],[2498,2],[3294,2],[4306,2],[5221,2],[6621,2],[7726,2],[9378,2],[10719,2]]}}}],["具体内容",{"_index":484,"t":{"72":{"position":[[102,4]]}}}],["兼容",{"_index":91,"t":{"10":{"position":[[37,2]]},"24":{"position":[[63,2]]}}}],["内",{"_index":333,"t":{"41":{"position":[[528,1],[1283,1],[1385,1]]}}}],["内容",{"_index":171,"t":{"18":{"position":[[607,2],[1435,2],[1529,2],[1613,2],[1713,2],[2555,2],[2649,2],[2733,2],[2833,2]]},"20":{"position":[[1272,2],[1295,2]]}}}],["内部",{"_index":311,"t":{"41":{"position":[[409,2],[562,2]]}}}],["写",{"_index":377,"t":{"41":{"position":[[927,1]]}}}],["准备",{"_index":183,"t":{"18":{"position":[[3356,2],[3564,2],[3768,2]]},"20":{"position":[[388,2],[809,2]]},"68":{"position":[[5,2]]},"70":{"position":[[3,2],[23,2]]},"87":{"position":[[5604,2],[5677,2],[7564,2],[8206,2],[8279,2],[10590,2]]},"89":{"position":[[397,2],[725,2]]}}}],["准确",{"_index":329,"t":{"41":{"position":[[507,2]]}}}],["准确性",{"_index":316,"t":{"41":{"position":[[451,3]]}}}],["减缓",{"_index":365,"t":{"41":{"position":[[865,2]]}}}],["几个",{"_index":140,"t":{"18":{"position":[[67,2]]}}}],["凭证",{"_index":180,"t":{"18":{"position":[[3344,2]]}}}],["出现",{"_index":255,"t":{"24":{"position":[[5320,2]]},"41":{"position":[[278,2],[542,2]]}}}],["函数",{"_index":400,"t":{"41":{"position":[[2154,2]]},"76":{"position":[[22,2]]},"87":{"position":[[1155,2],[1698,2],[3027,2],[3522,2],[4835,2],[5449,2],[7365,2],[8056,2],[9206,2],[9273,2],[9279,2],[10287,2],[11044,2],[11111,2],[11117,2],[11201,2]]}}}],["分",{"_index":357,"t":{"41":{"position":[[815,1]]}}}],["分为",{"_index":36,"t":{"4":{"position":[[20,2]]}}}],["分别",{"_index":17,"t":{"2":{"position":[[119,2]]},"4":{"position":[[31,2]]},"41":{"position":[[1034,2]]}}}],["分配",{"_index":475,"t":{"70":{"position":[[1656,2],[1975,2]]}}}],["分钟",{"_index":349,"t":{"41":{"position":[[748,2]]}}}],["分页",{"_index":356,"t":{"41":{"position":[[813,2]]}}}],["列表",{"_index":346,"t":{"41":{"position":[[705,2],[710,2]]},"61":{"position":[[134,2]]},"63":{"position":[[19,2]]},"89":{"position":[[85,2],[263,2]]}}}],["创建",{"_index":479,"t":{"72":{"position":[[32,2]]}}}],["判",{"_index":325,"t":{"41":{"position":[[480,1]]}}}],["别的",{"_index":585,"t":{"87":{"position":[[2035,2]]}}}],["前",{"_index":470,"t":{"70":{"position":[[531,1],[646,1],[774,1],[888,1],[1048,1],[1249,1]]}}}],["前后",{"_index":513,"t":{"76":{"position":[[597,2],[615,2],[1131,2],[1149,2],[1689,2],[1707,2],[2393,2],[2411,2]]}}}],["前往",{"_index":421,"t":{"59":{"position":[[964,2],[1010,2]]},"70":{"position":[[44,2],[1337,2]]},"78":{"position":[[62,2]]},"80":{"position":[[0,2],[31,2],[60,2]]},"84":{"position":[[995,2]]}}}],["前缀",{"_index":229,"t":{"24":{"position":[[2521,2]]}}}],["前言",{"_index":405,"t":{"45":{"position":[[208,2]]},"53":{"position":[[0,2]]}}}],["剩余",{"_index":511,"t":{"76":{"position":[[585,2],[1119,2],[1677,2],[2381,2]]}}}],["功能",{"_index":102,"t":{"10":{"position":[[254,2]]},"24":{"position":[[5004,2]]},"80":{"position":[[56,2]]}}}],["功能性",{"_index":54,"t":{"6":{"position":[[122,3]]}}}],["加入",{"_index":441,"t":{"63":{"position":[[13,2]]}}}],["加粗",{"_index":248,"t":{"24":{"position":[[3894,2],[4163,2]]}}}],["加载",{"_index":424,"t":{"59":{"position":[[1776,2],[2058,2]]},"70":{"position":[[2342,2],[2626,2]]},"84":{"position":[[1846,2],[2130,2]]},"87":{"position":[[226,2],[5810,2],[8412,2]]}}}],["包",{"_index":136,"t":{"18":{"position":[[17,1]]},"61":{"position":[[40,1]]}}}],["包括",{"_index":256,"t":{"24":{"position":[[5328,2]]}}}],["包装",{"_index":433,"t":{"61":{"position":[[109,2]]}}}],["匹配",{"_index":260,"t":{"24":{"position":[[5462,2],[5869,2],[6332,2]]},"76":{"position":[[563,2],[608,2],[1097,2],[1142,2],[1655,2],[1700,2],[2359,2],[2404,2]]},"87":{"position":[[720,2],[866,2],[977,2],[1561,2],[2592,2],[2738,2],[2849,2],[3385,2],[4400,2],[4546,2],[4657,2],[5312,2],[6739,2],[6955,2],[7084,2],[7841,2],[9493,2],[9778,2],[9904,2],[10831,2]]}}}],["区分",{"_index":474,"t":{"70":{"position":[[1473,2]]},"84":{"position":[[1113,2]]}}}],["单位",{"_index":340,"t":{"41":{"position":[[619,2],[669,2],[849,2],[1977,2]]}}}],["单独",{"_index":409,"t":{"57":{"position":[[99,2]]},"82":{"position":[[116,2]]}}}],["卡片",{"_index":249,"t":{"24":{"position":[[4397,2],[4729,2],[4864,2]]}}}],["即可",{"_index":307,"t":{"41":{"position":[[386,2]]}}}],["压缩",{"_index":286,"t":{"41":{"position":[[30,2]]}}}],["原因",{"_index":330,"t":{"41":{"position":[[512,2]]}}}],["原始",{"_index":192,"t":{"20":{"position":[[251,2]]},"24":{"position":[[3755,2],[3961,2],[4230,2]]},"41":{"position":[[2134,2],[2149,2]]},"87":{"position":[[544,2],[749,2],[996,2],[1590,2],[2416,2],[2621,2],[2868,2],[3414,2],[4224,2],[4429,2],[4676,2],[5341,2],[6506,2],[6768,2],[7103,2],[7870,2],[9105,2],[9522,2],[9923,2],[10860,2]]}}}],["原本",{"_index":388,"t":{"41":{"position":[[1349,2]]}}}],["参数",{"_index":144,"t":{"18":{"position":[[149,2],[532,2]]},"41":{"position":[[72,2]]},"63":{"position":[[367,2],[928,2],[1515,2],[2192,2],[2833,2]]},"76":{"position":[[693,2],[1226,2],[1800,2],[2491,2]]},"87":{"position":[[975,2],[2847,2],[4655,2],[7082,2],[9902,2]]}}}],["参考",{"_index":162,"t":{"18":{"position":[[293,2],[420,2],[1087,2],[1292,2],[2207,2],[2412,2]]},"41":{"position":[[45,2],[1198,2],[1254,2],[1669,2],[1790,2],[1923,2]]},"55":{"position":[[13,2],[65,2],[72,2]]},"59":{"position":[[355,2],[707,2],[886,2],[958,2]]},"63":{"position":[[128,2],[255,2],[690,2],[816,2],[1272,2],[1403,2],[1874,2],[2079,2],[2515,2],[2720,2]]},"70":{"position":[[166,2],[228,2],[529,2],[534,2],[644,2],[649,2],[772,2],[777,2],[886,2],[891,2],[1046,2],[1051,2],[1247,2],[1252,2],[1486,2]]},"72":{"position":[[107,2]]},"74":{"position":[[253,2]]},"76":{"position":[[1972,2]]},"84":{"position":[[361,2],[716,2],[898,2],[1126,2]]}}}],["及时",{"_index":335,"t":{"41":{"position":[[547,2]]},"80":{"position":[[201,2]]}}}],["友好",{"_index":20,"t":{"2":{"position":[[182,2]]},"10":{"position":[[42,2]]}}}],["反馈",{"_index":320,"t":{"41":{"position":[[463,2],[549,2]]},"78":{"position":[[46,2],[72,2]]}}}],["发布",{"_index":565,"t":{"80":{"position":[[183,2]]}}}],["发送",{"_index":71,"t":{"8":{"position":[[140,2]]},"10":{"position":[[272,2]]},"14":{"position":[[22,2]]},"18":{"position":[[75,2],[104,2],[135,2],[3043,2]]},"22":{"position":[[10,2]]},"24":{"position":[[401,2],[2465,2],[2579,2],[3549,2],[3642,2],[4386,2],[5284,2],[5330,2]]},"76":{"position":[[107,2]]}}}],["取而代之",{"_index":109,"t":{"10":{"position":[[330,4]]}}}],["变得",{"_index":536,"t":{"78":{"position":[[55,2]]}}}],["只有",{"_index":423,"t":{"59":{"position":[[1754,2],[2036,2]]},"70":{"position":[[2320,2],[2604,2]]},"84":{"position":[[1824,2],[2108,2]]},"87":{"position":[[708,2],[1549,2],[2580,2],[3373,2],[4388,2],[5300,2],[6727,2],[7829,2],[9481,2],[10819,2]]}}}],["可以",{"_index":89,"t":{"8":{"position":[[293,2]]},"10":{"position":[[375,2]]},"18":{"position":[[60,2],[159,2],[3318,2]]},"20":{"position":[[44,2],[1286,2]]},"24":{"position":[[397,2],[838,2],[1969,2],[2641,2],[2714,2],[2912,2],[2994,2],[3220,2],[3308,2],[3543,2],[4601,2],[5430,2],[5837,2],[6300,2]]},"32":{"position":[[100,2]]},"39":{"position":[[62,2]]},"41":{"position":[[258,2],[425,2],[442,2],[554,2],[855,2]]},"55":{"position":[[10,2],[70,2]]},"57":{"position":[[97,2]]},"59":{"position":[[225,2],[578,2],[1781,2],[2063,2]]},"61":{"position":[[74,2]]},"63":{"position":[[604,2],[1165,2],[1752,2]]},"70":{"position":[[40,2],[351,2],[1768,2],[2086,2],[2347,2],[2461,2],[2631,2]]},"72":{"position":[[343,2],[501,2]]},"74":{"position":[[251,2]]},"76":{"position":[[1970,2]]},"78":{"position":[[60,2]]},"82":{"position":[[114,2]]},"84":{"position":[[228,2],[584,2],[1294,2],[1851,2],[1965,2],[2135,2]]},"87":{"position":[[608,2],[838,2],[1082,2],[2045,2],[2176,2],[2480,2],[2710,2],[2954,2],[4288,2],[4518,2],[4762,2],[6603,2],[6927,2],[7259,2],[9360,2],[9750,2],[10148,2]]}}}],["可供使用",{"_index":61,"t":{"6":{"position":[[153,4]]},"8":{"position":[[193,4]]}}}],["可控",{"_index":331,"t":{"41":{"position":[[524,2]]}}}],["可用",{"_index":454,"t":{"68":{"position":[[11,2]]},"87":{"position":[[1344,2]]}}}],["可能",{"_index":82,"t":{"8":{"position":[[267,2]]},"41":{"position":[[487,2],[510,2],[2166,2]]},"70":{"position":[[304,2],[1455,2]]},"80":{"position":[[80,2]]},"84":{"position":[[1095,2]]},"87":{"position":[[231,2],[2161,2],[5815,2],[8417,2]]}}}],["可能性",{"_index":24,"t":{"2":{"position":[[200,3]]}}}],["各个",{"_index":143,"t":{"18":{"position":[[147,2]]}}}],["各种",{"_index":94,"t":{"10":{"position":[[205,2]]}}}],["合适",{"_index":414,"t":{"59":{"position":[[158,2],[490,2],[991,2],[1046,2],[1183,2],[1296,2],[1363,2],[1456,2],[1527,2],[1594,2],[1716,2],[1998,2]]},"70":{"position":[[1318,2],[1373,2],[1611,2],[1728,2],[1843,2],[1931,2],[2047,2],[2161,2],[2282,2],[2566,2]]},"84":{"position":[[161,2],[496,2],[976,2],[1031,2],[1254,2],[1369,2],[1436,2],[1528,2],[1599,2],[1664,2],[1786,2],[2070,2]]},"87":{"position":[[3868,2],[5150,2]]}}}],["同时",{"_index":345,"t":{"41":{"position":[[689,2]]},"80":{"position":[[143,2]]},"87":{"position":[[1355,2]]}}}],["同样",{"_index":73,"t":{"8":{"position":[[166,2]]}}}],["同步",{"_index":289,"t":{"41":{"position":[[103,2],[233,2],[268,2],[414,2],[434,2],[485,2],[538,2],[609,2],[663,2],[686,2],[693,2],[808,2],[819,2]]}}}],["名",{"_index":228,"t":{"24":{"position":[[2520,1]]}}}],["后果",{"_index":327,"t":{"41":{"position":[[492,2]]}}}],["后缀",{"_index":420,"t":{"59":{"position":[[253,2],[606,2],[806,2]]},"70":{"position":[[1660,2],[1979,2]]},"84":{"position":[[256,2],[612,2],[815,2]]}}}],["后面",{"_index":165,"t":{"18":{"position":[[405,2],[1277,2],[2397,2]]},"63":{"position":[[240,2],[801,2],[1388,2],[2064,2],[2705,2]]}}}],["否则",{"_index":461,"t":{"70":{"position":[[300,2]]}}}],["含义",{"_index":264,"t":{"32":{"position":[[21,2]]},"41":{"position":[[1138,2]]}}}],["启动",{"_index":190,"t":{"20":{"position":[[19,2]]},"74":{"position":[[27,2]]},"78":{"position":[[4,2]]},"87":{"position":[[1135,2],[1678,2],[3007,2],[3502,2],[4815,2],[5429,2],[7337,2],[8028,2],[10262,2],[11176,2]]}}}],["启用",{"_index":460,"t":{"70":{"position":[[292,2]]},"74":{"position":[[52,2]]},"87":{"position":[[292,2],[2101,2],[3935,2],[5934,2],[8536,2]]}}}],["周期",{"_index":290,"t":{"41":{"position":[[105,2],[612,2],[666,2]]}}}],["命名",{"_index":434,"t":{"61":{"position":[[113,2],[145,2],[167,2]]}}}],["响应",{"_index":525,"t":{"76":{"position":[[1917,2],[1984,2],[2518,2]]}}}],["哪儿",{"_index":282,"t":{"39":{"position":[[58,2]]}}}],["回复",{"_index":508,"t":{"76":{"position":[[113,2]]},"80":{"position":[[207,2]]}}}],["因为",{"_index":463,"t":{"70":{"position":[[313,2]]},"87":{"position":[[2026,2]]}}}],["因此",{"_index":133,"t":{"16":{"position":[[32,2]]},"41":{"position":[[419,2],[497,2],[516,2]]},"59":{"position":[[222,2],[575,2],[1779,2],[2061,2]]},"70":{"position":[[2345,2],[2629,2]]},"84":{"position":[[225,2],[581,2],[1849,2],[2133,2]]},"87":{"position":[[2041,2],[2168,2]]}}}],["固定值",{"_index":271,"t":{"37":{"position":[[0,3]]}}}],["图片",{"_index":209,"t":{"24":{"position":[[392,2],[403,2],[2725,2],[3005,2],[3319,2]]}}}],["在线",{"_index":251,"t":{"24":{"position":[[4999,2]]}}}],["地址",{"_index":437,"t":{"61":{"position":[[182,2]]}}}],["地方",{"_index":501,"t":{"76":{"position":[[12,2]]}}}],["场景",{"_index":116,"t":{"10":{"position":[[360,2]]},"32":{"position":[[29,2]]},"41":{"position":[[1056,2]]}}}],["基于",{"_index":8,"t":{"2":{"position":[[68,2],[121,2],[186,2]]},"6":{"position":[[8,2]]},"8":{"position":[[8,2]]},"10":{"position":[[8,2]]},"41":{"position":[[1302,2]]},"45":{"position":[[15,2],[98,2]]},"47":{"position":[[5,2]]},"49":{"position":[[11,2]]},"57":{"position":[[5,2]]},"66":{"position":[[127,2]]},"82":{"position":[[11,2]]}}}],["基本",{"_index":394,"t":{"41":{"position":[[2115,2]]}}}],["基本功能",{"_index":25,"t":{"2":{"position":[[205,4],[226,4]]}}}],["处理",{"_index":126,"t":{"14":{"position":[[19,2]]},"16":{"position":[[45,2]]},"20":{"position":[[1291,2]]},"24":{"position":[[3773,2],[3971,2],[4240,2]]},"76":{"position":[[1859,2],[2543,2]]},"87":{"position":[[10172,2],[10328,2]]}}}],["处理器",{"_index":390,"t":{"41":{"position":[[2057,3]]},"87":{"position":[[468,3],[729,3],[1570,3],[2340,3],[2601,3],[3394,3],[4148,3],[4409,3],[5321,3],[6412,3],[6748,3],[7850,3],[9014,3],[9502,3],[10840,3]]}}}],["处理结果",{"_index":528,"t":{"76":{"position":[[1988,4]]}}}],["备注",{"_index":396,"t":{"41":{"position":[[2121,2]]}}}],["外",{"_index":531,"t":{"78":{"position":[[35,1]]}}}],["多",{"_index":23,"t":{"2":{"position":[[196,1]]},"24":{"position":[[93,1]]},"32":{"position":[[46,1]]},"41":{"position":[[530,1],[1197,1],[1253,1],[1668,1],[1789,1],[1922,1]]},"59":{"position":[[193,1],[546,1]]},"61":{"position":[[1,1]]},"84":{"position":[[196,1],[552,1]]}}}],["多媒体",{"_index":253,"t":{"24":{"position":[[5260,3]]}}}],["多次",{"_index":235,"t":{"24":{"position":[[2651,2],[2922,2],[3230,2]]}}}],["大",{"_index":363,"t":{"41":{"position":[[860,1],[2172,1]]},"76":{"position":[[592,1],[1126,1],[1684,1],[2388,1]]}}}],["大于",{"_index":342,"t":{"41":{"position":[[674,2]]}}}],["大部分",{"_index":167,"t":{"18":{"position":[[516,3]]},"61":{"position":[[169,3]]},"63":{"position":[[351,3],[912,3],[1499,3],[2176,3],[2817,3]]}}}],["大量",{"_index":101,"t":{"10":{"position":[[250,2]]}}}],["太",{"_index":402,"t":{"41":{"position":[[2171,1]]},"61":{"position":[[0,1],[27,1]]}}}],["失败",{"_index":447,"t":{"63":{"position":[[452,2],[1013,2],[1600,2],[2285,2],[2923,2]]}}}],["如何",{"_index":134,"t":{"16":{"position":[[48,2],[61,2]]}}}],["如果",{"_index":238,"t":{"24":{"position":[[2816,2],[3106,2],[3420,2]]},"41":{"position":[[251,2],[495,2],[1358,2],[1494,2],[2124,2]]},"59":{"position":[[188,2],[202,2],[541,2],[555,2],[1201,2],[1752,2],[1807,2],[1873,2],[2034,2],[2089,2]]},"70":{"position":[[1627,2],[1746,2],[1946,2],[2064,2],[2318,2],[2373,2],[2439,2],[2602,2],[2657,2]]},"72":{"position":[[142,2],[223,2],[334,2],[492,2]]},"74":{"position":[[214,2]]},"76":{"position":[[1904,2]]},"78":{"position":[[28,2]]},"84":{"position":[[191,2],[205,2],[547,2],[561,2],[1272,2],[1822,2],[1877,2],[1943,2],[2106,2],[2161,2]]},"87":{"position":[[2170,2],[6396,2],[7710,2],[8998,2],[10164,2],[10320,2]]}}}],["始终",{"_index":561,"t":{"80":{"position":[[157,2]]}}}],["子",{"_index":502,"t":{"76":{"position":[[64,1]]}}}],["字符串",{"_index":246,"t":{"24":{"position":[[3757,3]]},"87":{"position":[[553,3],[758,3],[1005,3],[1599,3],[2425,3],[2630,3],[2877,3],[3423,3],[4233,3],[4438,3],[4685,3],[5350,3],[6515,3],[6777,3],[7112,3],[7879,3],[9114,3],[9531,3],[9932,3],[10869,3]]}}}],["存在",{"_index":83,"t":{"8":{"position":[[269,2]]},"61":{"position":[[116,2]]},"76":{"position":[[595,2],[1129,2],[1687,2],[1936,2],[2391,2]]},"87":{"position":[[233,2],[5817,2],[8419,2]]}}}],["它们",{"_index":39,"t":{"4":{"position":[[29,2]]},"8":{"position":[[288,2]]},"18":{"position":[[144,2]]},"41":{"position":[[1032,2],[1088,2]]},"61":{"position":[[164,2]]}}}],["安装",{"_index":410,"t":{"59":{"position":[[3,2],[989,2]]},"70":{"position":[[1316,2]]},"84":{"position":[[3,2],[974,2]]}}}],["完全",{"_index":90,"t":{"8":{"position":[[295,2]]},"24":{"position":[[3553,2]]},"41":{"position":[[428,2],[477,2]]}}}],["完善",{"_index":337,"t":{"41":{"position":[[560,2]]},"80":{"position":[[228,2]]}}}],["完整",{"_index":269,"t":{"34":{"position":[[0,2]]},"41":{"position":[[1390,2]]},"80":{"position":[[167,2]]}}}],["宗旨",{"_index":55,"t":{"6":{"position":[[131,2]]},"8":{"position":[[164,2]]}}}],["官",{"_index":31,"t":{"2":{"position":[[242,1]]},"55":{"position":[[81,1]]},"80":{"position":[[10,1]]}}}],["官方",{"_index":131,"t":{"16":{"position":[[21,2],[34,2]]}}}],["定义",{"_index":92,"t":{"10":{"position":[[131,2]]}}}],["定时",{"_index":303,"t":{"41":{"position":[[266,2],[432,2],[483,2],[536,2]]}}}],["实例",{"_index":381,"t":{"41":{"position":[[1074,2]]}}}],["实现",{"_index":12,"t":{"2":{"position":[[92,2]]},"8":{"position":[[119,2]]},"10":{"position":[[79,2],[114,2],[159,2],[164,2]]},"16":{"position":[[29,2]]},"24":{"position":[[2482,2]]},"70":{"position":[[364,2],[1480,2]]},"84":{"position":[[1120,2]]}}}],["实用性",{"_index":550,"t":{"80":{"position":[[91,3]]}}}],["实质",{"_index":78,"t":{"8":{"position":[[241,2]]},"57":{"position":[[77,2]]},"82":{"position":[[94,2]]}}}],["实际",{"_index":259,"t":{"24":{"position":[[5458,2],[5865,2],[6328,2]]},"61":{"position":[[177,2]]}}}],["对",{"_index":11,"t":{"2":{"position":[[81,1],[175,1]]},"8":{"position":[[124,1]]},"10":{"position":[[61,1],[259,1],[275,1],[323,1]]},"16":{"position":[[41,1]]},"22":{"position":[[6,1]]},"24":{"position":[[29,1]]},"39":{"position":[[0,1]]},"41":{"position":[[408,1],[601,1],[655,1],[2162,1]]},"76":{"position":[[1957,1]]}}}],["对于",{"_index":26,"t":{"2":{"position":[[210,2]]},"10":{"position":[[354,2]]},"32":{"position":[[70,2]]}}}],["对应",{"_index":132,"t":{"16":{"position":[[27,2]]},"59":{"position":[[110,2],[426,2]]},"61":{"position":[[174,2]]},"72":{"position":[[153,2]]},"84":{"position":[[113,2],[432,2]]}}}],["对象",{"_index":250,"t":{"24":{"position":[[4741,2],[4876,2]]},"41":{"position":[[98,2],[1383,2],[2142,2]]}}}],["寻找",{"_index":432,"t":{"61":{"position":[[94,2]]}}}],["封装",{"_index":52,"t":{"6":{"position":[[110,2],[125,2]]},"8":{"position":[[114,2]]},"10":{"position":[[223,2]]},"57":{"position":[[119,2]]},"82":{"position":[[143,2]]}}}],["将",{"_index":59,"t":{"6":{"position":[[143,1]]},"8":{"position":[[178,1]]},"24":{"position":[[5255,1]]},"41":{"position":[[367,1],[2103,1]]},"63":{"position":[[434,1],[995,1],[1582,1],[2267,1],[2905,1]]},"76":{"position":[[570,1],[1104,1],[1662,1],[1819,1],[2366,1],[2510,1]]}}}],["将要",{"_index":517,"t":{"76":{"position":[[682,2],[1215,2],[1789,2],[2480,2]]}}}],["尝试",{"_index":301,"t":{"41":{"position":[[260,2],[532,2]]},"59":{"position":[[1767,2],[2049,2]]},"70":{"position":[[2333,2],[2617,2]]},"84":{"position":[[1837,2],[2121,2]]},"87":{"position":[[222,2],[5806,2],[8408,2]]}}}],["就",{"_index":149,"t":{"18":{"position":[[175,1]]},"41":{"position":[[404,1],[2168,1]]}}}],["就是",{"_index":135,"t":{"16":{"position":[[59,2]]},"76":{"position":[[3,2],[61,2]]},"87":{"position":[[515,2],[696,2],[945,2],[1537,2],[2387,2],[2568,2],[2817,2],[3361,2],[4195,2],[4376,2],[4625,2],[5288,2],[6477,2],[6715,2],[7052,2],[7817,2],[9076,2],[9469,2],[9872,2],[10807,2]]}}}],["尽可能",{"_index":104,"t":{"10":{"position":[[301,3]]},"80":{"position":[[197,3]]}}}],["屏蔽掉",{"_index":105,"t":{"10":{"position":[[304,3]]}}}],["属性",{"_index":196,"t":{"20":{"position":[[1283,2]]},"32":{"position":[[18,2]]},"41":{"position":[[889,2],[1537,2]]}}}],["工具",{"_index":455,"t":{"70":{"position":[[70,2]]}}}],["差异",{"_index":254,"t":{"24":{"position":[[5293,2]]}}}],["差错",{"_index":305,"t":{"41":{"position":[[280,2]]}}}],["希望",{"_index":313,"t":{"41":{"position":[[423,2],[520,2]]}}}],["帮助",{"_index":336,"t":{"41":{"position":[[556,2]]},"59":{"position":[[227,2],[580,2]]},"84":{"position":[[230,2],[586,2]]}}}],["平台",{"_index":19,"t":{"2":{"position":[[172,2],[197,2]]},"6":{"position":[[37,2],[94,2]]},"8":{"position":[[37,2]]},"10":{"position":[[34,2]]},"39":{"position":[[73,2]]},"45":{"position":[[44,2],[127,2]]},"47":{"position":[[34,2]]},"49":{"position":[[40,2]]},"57":{"position":[[34,2]]},"59":{"position":[[112,2],[194,2],[428,2],[547,2],[816,2],[1748,2],[2030,2]]},"63":{"position":[[1213,2]]},"70":{"position":[[1658,2],[1977,2],[2314,2],[2598,2]]},"82":{"position":[[40,2]]},"84":{"position":[[115,2],[197,2],[434,2],[553,2],[825,2],[1818,2],[2102,2]]},"87":{"position":[[211,2],[2009,2],[2030,2],[2119,2],[2142,2],[3687,2],[3861,2],[3957,2],[5143,2],[5795,2],[8397,2]]},"89":{"position":[[131,2]]}}}],["并且",{"_index":226,"t":{"24":{"position":[[2508,2]]},"76":{"position":[[88,2]]}}}],["库",{"_index":10,"t":{"2":{"position":[[79,1]]},"4":{"position":[[50,1],[62,1]]},"6":{"position":[[160,1]]},"8":{"position":[[5,1],[81,1],[158,1],[200,1],[214,1],[264,1],[309,1]]},"10":{"position":[[5,1],[57,1],[70,1],[108,1],[215,1],[297,1]]},"16":{"position":[[11,1]]},"18":{"position":[[3313,1]]},"20":{"position":[[15,1]]},"22":{"position":[[3,1]]},"24":{"position":[[8,1],[22,1]]},"45":{"position":[[85,1],[95,1],[185,1]]},"49":{"position":[[8,1]]},"55":{"position":[[60,1],[91,1]]},"57":{"position":[[121,1]]},"59":{"position":[[818,1]]},"76":{"position":[[1915,1],[1962,1]]},"82":{"position":[[8,1],[86,1],[145,1],[150,1]]},"84":{"position":[[827,1]]},"89":{"position":[[3,1]]}}}],["应",{"_index":310,"t":{"41":{"position":[[405,1]]}}}],["应为",{"_index":483,"t":{"72":{"position":[[73,2]]}}}],["应当",{"_index":452,"t":{"68":{"position":[[3,2]]}}}],["应用",{"_index":266,"t":{"32":{"position":[[43,2],[49,2]]},"39":{"position":[[76,2]]},"74":{"position":[[17,2]]},"80":{"position":[[95,2]]}}}],["底层",{"_index":51,"t":{"6":{"position":[[108,2]]},"8":{"position":[[302,2]]},"10":{"position":[[307,2],[383,2]]},"57":{"position":[[117,2]]},"82":{"position":[[141,2]]}}}],["开发",{"_index":48,"t":{"6":{"position":[[92,2]]}}}],["开发者",{"_index":107,"t":{"10":{"position":[[324,3],[370,3]]},"32":{"position":[[95,3]]},"39":{"position":[[70,3]]}}}],["开启",{"_index":586,"t":{"87":{"position":[[2146,2],[2180,2],[3985,2]]}}}],["开头",{"_index":490,"t":{"72":{"position":[[356,2],[514,2]]}}}],["开始",{"_index":576,"t":{"87":{"position":[[1164,2],[1707,2],[3036,2],[3531,2],[4844,2],[5458,2],[7374,2],[8065,2],[10296,2],[11210,2]]}}}],["异常",{"_index":449,"t":{"63":{"position":[[460,2],[1021,2],[1608,2],[2293,2],[2931,2]]},"87":{"position":[[10174,2],[10330,2]]}}}],["异步",{"_index":391,"t":{"41":{"position":[[2063,2]]},"87":{"position":[[9204,2],[9290,2],[9299,2],[9680,2],[9689,2],[10079,2],[10088,2],[11018,2],[11027,2],[11042,2]]}}}],["式",{"_index":521,"t":{"76":{"position":[[1253,1],[1919,1],[1986,1],[2520,1]]}}}],["引入",{"_index":159,"t":{"18":{"position":[[276,2],[1070,2],[2190,2]]},"63":{"position":[[111,2],[673,2],[1255,2],[1857,2],[2498,2]]}}}],["引擎",{"_index":161,"t":{"18":{"position":[[286,2],[1080,2],[1152,2],[2200,2],[2272,2]]},"41":{"position":[[1077,2]]},"59":{"position":[[1062,2],[1117,2],[1231,2],[1317,2],[1616,2],[1758,2],[1815,2],[1903,2],[2040,2],[2097,2]]},"63":{"position":[[121,2],[683,2],[1265,2],[1867,2],[1939,2],[2508,2],[2580,2]]},"70":{"position":[[1407,2],[1448,2],[1453,2],[1478,2],[1545,2],[1778,2],[1865,2],[2096,2],[2182,2],[2324,2],[2381,2],[2471,2],[2608,2],[2665,2]]},"84":{"position":[[1047,2],[1088,2],[1093,2],[1118,2],[1188,2],[1304,2],[1390,2],[1686,2],[1828,2],[1885,2],[1975,2],[2112,2],[2169,2]]},"87":{"position":[[202,2],[236,2],[1351,2],[2001,2],[3846,2],[3871,2],[5128,2],[5153,2],[5786,2],[5820,2],[8388,2],[8422,2]]}}}],["引用",{"_index":179,"t":{"18":{"position":[[1624,2],[2744,2]]},"74":{"position":[[228,2]]},"76":{"position":[[103,2]]}}}],["强大",{"_index":100,"t":{"10":{"position":[[242,2]]}}}],["当前",{"_index":440,"t":{"63":{"position":[[4,2]]},"87":{"position":[[7480,2],[8132,2]]}}}],["当然",{"_index":113,"t":{"10":{"position":[[351,2]]},"70":{"position":[[346,2]]},"78":{"position":[[25,2]]}}}],["形式",{"_index":268,"t":{"32":{"position":[[111,2]]},"76":{"position":[[1857,2],[2541,2]]}}}],["很大",{"_index":438,"t":{"61":{"position":[[185,2]]}}}],["得到",{"_index":174,"t":{"18":{"position":[[775,2],[1848,2],[2968,2],[3524,2],[3719,2],[3923,2]]},"24":{"position":[[2555,2],[4737,2],[4872,2]]},"87":{"position":[[10216,2]]},"89":{"position":[[589,2],[917,2]]}}}],["必不可少",{"_index":127,"t":{"14":{"position":[[25,4]]}}}],["必填",{"_index":272,"t":{"37":{"position":[[16,2]]}}}],["必要",{"_index":156,"t":{"18":{"position":[[269,2],[1063,2],[2183,2]]},"63":{"position":[[104,2],[666,2],[1248,2],[1850,2],[2491,2]]}}}],["必须",{"_index":169,"t":{"18":{"position":[[529,2]]},"63":{"position":[[364,2],[925,2],[1512,2],[2189,2],[2830,2]]},"76":{"position":[[82,2],[1934,2]]}}}],["忽略",{"_index":516,"t":{"76":{"position":[[613,2],[1147,2],[1705,2],[2409,2]]}}}],["情况",{"_index":58,"t":{"6":{"position":[[140,2]]},"8":{"position":[[175,2]]},"10":{"position":[[367,2]]},"24":{"position":[[5460,2],[5867,2],[6330,2]]},"41":{"position":[[437,2]]},"63":{"position":[[455,2],[1016,2],[1603,2],[2288,2],[2926,2]]},"74":{"position":[[246,2]]}}}],["想要",{"_index":187,"t":{"20":{"position":[[0,2]]},"59":{"position":[[1809,2],[2091,2]]},"70":{"position":[[2375,2],[2659,2]]},"72":{"position":[[225,2]]},"84":{"position":[[1879,2],[2163,2]]}}}],["感谢您",{"_index":338,"t":{"41":{"position":[[571,3]]}}}],["慌",{"_index":533,"t":{"78":{"position":[[42,1]]}}}],["成员",{"_index":347,"t":{"41":{"position":[[708,2]]}}}],["我们",{"_index":128,"t":{"14":{"position":[[42,2]]},"16":{"position":[[14,2]]},"20":{"position":[[41,2]]},"41":{"position":[[421,2],[473,2],[518,2],[558,2]]},"61":{"position":[[4,2]]},"70":{"position":[[98,2]]},"76":{"position":[[35,2]]},"78":{"position":[[53,2]]},"80":{"position":[[124,2],[194,2],[222,2]]},"89":{"position":[[6,2]]}}}],["或者",{"_index":422,"t":{"59":{"position":[[1199,2],[1871,2]]},"70":{"position":[[1744,2],[2062,2],[2437,2]]},"84":{"position":[[1270,2],[1941,2]]},"87":{"position":[[368,2],[2240,2],[4048,2],[6046,2],[8648,2]]}}}],["或许",{"_index":497,"t":{"74":{"position":[[249,2]]}}}],["所在",{"_index":500,"t":{"76":{"position":[[9,2]]}}}],["所有",{"_index":215,"t":{"24":{"position":[[1982,2],[4997,2]]},"41":{"position":[[701,2],[1535,2]]},"61":{"position":[[15,2],[32,2]]}}}],["所求",{"_index":121,"t":{"10":{"position":[[391,2]]}}}],["所述",{"_index":217,"t":{"24":{"position":[[2183,2]]},"59":{"position":[[359,2],[711,2],[890,2]]},"84":{"position":[[365,2],[720,2],[902,2]]}}}],["手动",{"_index":182,"t":{"18":{"position":[[3354,2]]},"59":{"position":[[1811,2],[2093,2]]},"70":{"position":[[2377,2],[2661,2]]},"84":{"position":[[1881,2],[2165,2]]}}}],["才",{"_index":527,"t":{"76":{"position":[[1963,1]]},"80":{"position":[[224,1]]},"87":{"position":[[722,1],[1162,1],[1563,1],[1705,1],[2594,1],[3034,1],[3387,1],[3529,1],[4402,1],[4842,1],[5314,1],[5456,1],[6741,1],[7372,1],[7843,1],[8063,1],[9495,1],[10294,1],[10833,1],[11208,1]]}}}],["才能",{"_index":535,"t":{"78":{"position":[[50,2]]}}}],["打算",{"_index":397,"t":{"41":{"position":[[2128,2]]}}}],["执行",{"_index":392,"t":{"41":{"position":[[2066,2]]}}}],["扩展名",{"_index":482,"t":{"72":{"position":[[70,3]]}}}],["扫描",{"_index":488,"t":{"72":{"position":[[291,2],[449,2]]}}}],["批次",{"_index":358,"t":{"41":{"position":[[816,2],[836,2]]}}}],["找到",{"_index":147,"t":{"18":{"position":[[170,2]]}}}],["抛出",{"_index":448,"t":{"63":{"position":[[458,2],[1019,2],[1606,2],[2291,2],[2929,2]]}}}],["拍",{"_index":374,"t":{"41":{"position":[[921,1]]}}}],["拼接",{"_index":245,"t":{"24":{"position":[[3753,2],[3979,2],[4248,2]]}}}],["挂",{"_index":359,"t":{"41":{"position":[[841,1]]},"87":{"position":[[1200,1],[1743,1],[3072,1],[3567,1],[4880,1],[5494,1]]}}}],["指",{"_index":216,"t":{"24":{"position":[[2170,1]]}}}],["指定",{"_index":240,"t":{"24":{"position":[[2826,2],[3116,2],[3430,2]]},"59":{"position":[[1813,2],[2095,2]]},"70":{"position":[[2379,2],[2663,2]]},"84":{"position":[[1883,2],[2167,2]]}}}],["接下来",{"_index":476,"t":{"72":{"position":[[0,3]]},"76":{"position":[[0,3]]},"78":{"position":[[0,3]]}}}],["接口",{"_index":225,"t":{"24":{"position":[[2505,2]]}}}],["接收",{"_index":125,"t":{"14":{"position":[[16,2]]},"20":{"position":[[2,2],[46,2]]},"22":{"position":[[13,2]]},"24":{"position":[[5334,2]]},"87":{"position":[[519,2],[540,2],[700,2],[745,2],[949,2],[992,2],[1541,2],[1586,2],[2391,2],[2412,2],[2572,2],[2617,2],[2821,2],[2864,2],[3365,2],[3410,2],[4199,2],[4220,2],[4380,2],[4425,2],[4629,2],[4672,2],[5292,2],[5337,2],[6481,2],[6502,2],[6719,2],[6764,2],[7056,2],[7099,2],[7821,2],[7866,2],[9080,2],[9101,2],[9473,2],[9518,2],[9876,2],[9919,2],[10811,2],[10856,2]]}}}],["描述",{"_index":60,"t":{"6":{"position":[[150,2]]},"8":{"position":[[190,2]]}}}],["提供",{"_index":21,"t":{"2":{"position":[[193,2]]},"6":{"position":[[81,2],[117,2]]},"8":{"position":[[99,2]]},"10":{"position":[[40,2],[138,2],[174,2],[195,2],[248,2]]},"14":{"position":[[49,2]]},"16":{"position":[[16,2]]},"18":{"position":[[210,2]]},"24":{"position":[[43,2],[2444,2],[2543,2]]},"32":{"position":[[4,2]]},"43":{"position":[[4,2]]},"70":{"position":[[333,2]]},"89":{"position":[[16,2],[42,2]]}}}],["提出",{"_index":539,"t":{"78":{"position":[[80,2]]},"80":{"position":[[66,2]]}}}],["提及",{"_index":211,"t":{"24":{"position":[[835,2],[846,2],[1966,2],[1980,2],[4995,2]]}}}],["插件",{"_index":88,"t":{"8":{"position":[[282,2]]},"59":{"position":[[72,2],[98,2],[219,2],[388,2],[414,2],[572,2]]},"70":{"position":[[1650,2],[1969,2]]},"84":{"position":[[75,2],[101,2],[222,2],[394,2],[420,2],[578,2]]}}}],["搜索",{"_index":543,"t":{"80":{"position":[[48,2]]}}}],["搭建",{"_index":451,"t":{"66":{"position":[[123,2]]}}}],["操作",{"_index":398,"t":{"41":{"position":[[2132,2]]}}}],["支持",{"_index":41,"t":{"6":{"position":[[20,2]]},"8":{"position":[[20,2]]},"10":{"position":[[27,2],[290,2]]},"24":{"position":[[40,2],[105,2]]},"41":{"position":[[575,2]]},"45":{"position":[[27,2],[110,2]]},"47":{"position":[[17,2]]},"49":{"position":[[23,2]]},"57":{"position":[[17,2]]},"70":{"position":[[1377,2],[1427,2],[1458,2]]},"76":{"position":[[1960,2]]},"82":{"position":[[23,2]]},"84":{"position":[[1067,2],[1098,2]]},"87":{"position":[[1357,2],[2144,2],[3980,2]]}}}],["放在",{"_index":518,"t":{"76":{"position":[[691,2],[1224,2],[1798,2],[2489,2]]}}}],["效果",{"_index":393,"t":{"41":{"position":[[2101,2]]}}}],["数据",{"_index":287,"t":{"41":{"position":[[32,2],[230,2],[273,2],[466,2],[810,2]]}}}],["整个",{"_index":34,"t":{"4":{"position":[[16,2]]}}}],["文",{"_index":471,"t":{"70":{"position":[[532,1],[647,1],[775,1],[889,1],[1049,1],[1250,1]]}}}],["文件",{"_index":236,"t":{"24":{"position":[[2720,2],[2820,2],[3000,2],[3110,2],[3314,2],[3424,2]]},"72":{"position":[[288,2],[341,2],[446,2],[499,2]]}}}],["文件名",{"_index":480,"t":{"72":{"position":[[64,3]]}}}],["文件夹",{"_index":478,"t":{"72":{"position":[[28,3]]}}}],["文件目录",{"_index":477,"t":{"72":{"position":[[9,4],[158,4]]}}}],["文本",{"_index":205,"t":{"24":{"position":[[85,2],[96,2],[164,2],[185,2],[241,2],[279,2],[325,2],[360,2],[3964,2],[4233,2]]},"76":{"position":[[588,2],[1122,2],[1680,2],[2384,2]]}}}],["文档",{"_index":7,"t":{"2":{"position":[[57,2]]},"18":{"position":[[166,2]]},"41":{"position":[[1205,2],[1261,2]]},"61":{"position":[[82,2]]},"66":{"position":[[2,2]]},"70":{"position":[[1493,2]]},"76":{"position":[[1980,2]]},"80":{"position":[[37,2],[97,2],[134,2],[152,2],[175,2]]},"84":{"position":[[1133,2]]}}}],["新",{"_index":416,"t":{"59":{"position":[[162,1],[494,1],[1187,1],[1300,1],[1367,1],[1460,1],[1531,1],[1598,1],[1720,1],[2002,1]]},"70":{"position":[[1615,1],[1732,1],[1847,1],[1935,1],[2051,1],[2165,1],[2286,1],[2570,1]]},"84":{"position":[[165,1],[500,1],[1258,1],[1373,1],[1440,1],[1532,1],[1603,1],[1668,1],[1790,1],[2074,1]]}}}],["方式",{"_index":173,"t":{"18":{"position":[[620,2]]},"61":{"position":[[91,2]]},"89":{"position":[[136,2]]}}}],["方法",{"_index":597,"t":{"89":{"position":[[31,2]]}}}],["施工",{"_index":404,"t":{"45":{"position":[[187,2]]},"51":{"position":[[0,2]]},"55":{"position":[[5,2]]}}}],["无法",{"_index":323,"t":{"41":{"position":[[475,2]]},"74":{"position":[[226,2]]}}}],["无需",{"_index":206,"t":{"24":{"position":[[91,2]]}}}],["早",{"_index":494,"t":{"74":{"position":[[209,1]]}}}],["时",{"_index":279,"t":{"39":{"position":[[42,1]]},"41":{"position":[[546,1],[677,1],[1343,1],[2088,1]]},"76":{"position":[[568,1],[1102,1],[1660,1],[2364,1]]},"87":{"position":[[194,1],[341,1],[1993,1],[2213,1],[3838,1],[4021,1],[5120,1],[5778,1],[6001,1],[8380,1],[8603,1]]}}}],["时不时",{"_index":549,"t":{"80":{"position":[[83,3]]}}}],["时候",{"_index":350,"t":{"41":{"position":[[757,2],[1291,2]]},"70":{"position":[[256,2]]},"76":{"position":[[611,2],[1145,2],[1703,2],[2407,2]]}}}],["时间",{"_index":361,"t":{"41":{"position":[[846,2],[1296,2],[1974,2]]}}}],["明",{"_index":112,"t":{"10":{"position":[[340,1]]}}}],["是否",{"_index":285,"t":{"41":{"position":[[28,2],[275,2],[2060,2]]},"87":{"position":[[290,2],[2099,2],[3933,2],[5932,2],[8534,2]]}}}],["更",{"_index":22,"t":{"2":{"position":[[195,1]]},"10":{"position":[[266,1]]},"18":{"position":[[152,1]]},"24":{"position":[[2459,1]]},"41":{"position":[[529,1],[1196,1],[1252,1],[1667,1],[1788,1],[1921,1]]}}}],["更加",{"_index":110,"t":{"10":{"position":[[336,2]]},"41":{"position":[[245,2]]}}}],["更好",{"_index":537,"t":{"78":{"position":[[57,2]]}}}],["更新",{"_index":312,"t":{"41":{"position":[[416,2]]},"80":{"position":[[87,2]]}}}],["替代",{"_index":592,"t":{"87":{"position":[[9270,2],[11108,2]]}}}],["最好",{"_index":418,"t":{"59":{"position":[[214,2],[567,2]]},"84":{"position":[[217,2],[573,2]]}}}],["最终",{"_index":546,"t":{"80":{"position":[[72,2],[219,2]]}}}],["有效",{"_index":343,"t":{"41":{"position":[[678,2]]}}}],["有着",{"_index":198,"t":{"22":{"position":[[16,2]]}}}],["服务器",{"_index":344,"t":{"41":{"position":[[683,3],[696,3]]},"63":{"position":[[16,3]]},"70":{"position":[[296,3]]},"87":{"position":[[1175,3],[1718,3],[3047,3],[3542,3],[4855,3],[5469,3],[7385,3],[8076,3],[10307,3],[11221,3]]},"89":{"position":[[82,3]]}}}],["服务器进行",{"_index":278,"t":{"39":{"position":[[33,5]]},"41":{"position":[[604,5],[658,5]]}}}],["本",{"_index":261,"t":{"32":{"position":[[0,1]]},"66":{"position":[[0,1]]}}}],["本地",{"_index":489,"t":{"72":{"position":[[339,2],[497,2]]}}}],["本手册",{"_index":547,"t":{"80":{"position":[[75,3],[230,3]]}}}],["本次",{"_index":568,"t":{"87":{"position":[[517,2],[698,2],[947,2],[1539,2],[2389,2],[2570,2],[2819,2],[3363,2],[4197,2],[4378,2],[4627,2],[5290,2],[6479,2],[6717,2],[7054,2],[7819,2],[9078,2],[9471,2],[9874,2],[10809,2]]}}}],["本身",{"_index":385,"t":{"41":{"position":[[1336,2]]}}}],["机制",{"_index":295,"t":{"41":{"position":[[235,2],[567,2]]}}}],["机器人",{"_index":5,"t":{"2":{"position":[[37,3],[87,3]]},"4":{"position":[[11,3]]},"6":{"position":[[89,3]]},"10":{"position":[[76,3]]},"66":{"position":[[147,3]]},"68":{"position":[[19,3]]}}}],["权",{"_index":164,"t":{"18":{"position":[[392,1],[1264,1],[2384,1]]},"63":{"position":[[227,1],[788,1],[1375,1],[2051,1],[2692,1]]}}}],["条件",{"_index":473,"t":{"70":{"position":[[1413,2]]},"84":{"position":[[1053,2]]}}}],["来到",{"_index":1,"t":{"2":{"position":[[2,2]]}}}],["来源",{"_index":181,"t":{"18":{"position":[[3346,2]]}}}],["来说",{"_index":401,"t":{"41":{"position":[[2164,2]]}}}],["极其",{"_index":553,"t":{"80":{"position":[[113,2]]}}}],["构建",{"_index":18,"t":{"2":{"position":[[164,2]]},"6":{"position":[[15,2]]},"8":{"position":[[15,2]]},"10":{"position":[[22,2]]},"18":{"position":[[506,2],[618,2],[1009,2],[1379,2],[2129,2],[2499,2],[3320,2],[3498,2],[3644,2],[3690,2],[3848,2],[3894,2]]},"20":{"position":[[468,2],[889,2]]},"24":{"position":[[3620,2],[3830,2],[4099,2],[4447,2]]},"45":{"position":[[22,2],[105,2]]},"47":{"position":[[12,2]]},"49":{"position":[[18,2]]},"57":{"position":[[12,2]]},"63":{"position":[[341,2],[902,2],[1489,2],[1796,2],[2166,2],[2437,2],[2807,2]]},"82":{"position":[[18,2]]},"87":{"position":[[54,2],[1320,2],[1853,2],[3192,2],[3698,2],[5000,2],[6305,2],[7637,2],[8907,2],[10663,2]]},"89":{"position":[[147,2],[483,2],[535,2],[811,2],[863,2]]}}}],["某个",{"_index":571,"t":{"87":{"position":[[859,2],[1468,2],[2731,2],[3292,2],[4539,2],[5219,2],[6948,2],[7724,2],[9771,2],[10717,2]]}}}],["某处",{"_index":578,"t":{"87":{"position":[[1217,2],[1760,2],[3089,2],[3584,2],[4897,2],[5511,2],[7499,2],[8151,2],[10411,2],[11291,2]]}}}],["查看",{"_index":283,"t":{"39":{"position":[[80,2]]},"59":{"position":[[976,2]]}}}],["查询",{"_index":573,"t":{"87":{"position":[[1084,2],[2956,2],[4764,2],[7261,2],[10150,2]]}}}],["查阅",{"_index":430,"t":{"61":{"position":[[86,2]]}}}],["标准",{"_index":28,"t":{"2":{"position":[[223,2]]},"4":{"position":[[48,2]]},"8":{"position":[[3,2],[79,2],[156,2],[212,2]]},"16":{"position":[[9,2]]},"18":{"position":[[3311,2]]},"24":{"position":[[30,2],[66,2],[2428,2]]},"45":{"position":[[83,2],[93,2]]},"49":{"position":[[6,2]]},"82":{"position":[[6,2],[84,2],[148,2]]},"89":{"position":[[1,2]]}}}],["标注",{"_index":493,"t":{"74":{"position":[[34,2]]}}}],["校验",{"_index":275,"t":{"39":{"position":[[10,2]]}}}],["核心",{"_index":9,"t":{"2":{"position":[[77,2]]},"4":{"position":[[60,2]]},"10":{"position":[[3,2],[55,2],[68,2],[106,2],[213,2],[295,2]]},"20":{"position":[[13,2]]},"22":{"position":[[1,2]]},"24":{"position":[[6,2]]},"45":{"position":[[183,2]]},"55":{"position":[[58,2],[89,2]]}}}],["根据",{"_index":570,"t":{"87":{"position":[[610,2],[840,2],[2482,2],[2712,2],[4290,2],[4520,2],[6605,2],[6929,2],[9362,2],[9752,2]]}}}],["检测",{"_index":442,"t":{"63":{"position":[[423,2],[984,2],[1571,2],[2256,2],[2894,2]]}}}],["概念",{"_index":66,"t":{"8":{"position":[[111,2]]}}}],["概率",{"_index":512,"t":{"76":{"position":[[593,2],[1127,2],[1685,2],[2389,2]]}}}],["概要",{"_index":40,"t":{"6":{"position":[[0,2]]},"8":{"position":[[0,2]]},"10":{"position":[[0,2],[348,2]]}}}],["模块",{"_index":16,"t":{"2":{"position":[[117,2]]},"4":{"position":[[26,2],[38,2],[52,2],[64,2]]},"6":{"position":[[6,2],[73,2],[114,2]]},"8":{"position":[[6,2],[82,2],[89,2],[151,2],[159,2],[209,2],[215,2],[247,2]]},"10":{"position":[[6,2],[58,2],[109,2],[216,2],[298,2],[317,2]]},"16":{"position":[[6,2],[56,2]]},"45":{"position":[[13,2],[96,2]]},"47":{"position":[[3,2]]},"49":{"position":[[9,2]]},"57":{"position":[[3,2],[70,2]]},"82":{"position":[[9,2],[87,2],[151,2],[158,2]]}}}],["模式",{"_index":284,"t":{"39":{"position":[[147,2]]}}}],["欢迎",{"_index":0,"t":{"2":{"position":[[0,2]]}}}],["此参数",{"_index":364,"t":{"41":{"position":[[861,3]]}}}],["此基础",{"_index":64,"t":{"8":{"position":[[93,3]]}}}],["此处",{"_index":177,"t":{"18":{"position":[[1139,2],[2259,2]]},"61":{"position":[[9,2]]},"63":{"position":[[1200,2],[1926,2],[2567,2]]},"76":{"position":[[33,2]]},"87":{"position":[[2043,2],[3674,2]]}}}],["此时",{"_index":389,"t":{"41":{"position":[[1434,2]]},"76":{"position":[[97,2]]}}}],["每次",{"_index":599,"t":{"89":{"position":[[37,2]]}}}],["比如",{"_index":413,"t":{"59":{"position":[[115,2],[431,2]]},"61":{"position":[[124,2]]},"84":{"position":[[118,2],[437,2]]}}}],["毫秒",{"_index":341,"t":{"41":{"position":[[621,2],[671,2],[733,2],[851,2],[1993,2]]}}}],["沙箱",{"_index":529,"t":{"78":{"position":[[12,2]]}}}],["没",{"_index":584,"t":{"87":{"position":[[2034,1]]}}}],["没有",{"_index":383,"t":{"41":{"position":[[1133,2],[2169,2]]},"70":{"position":[[1629,2],[1948,2]]}}}],["注册",{"_index":189,"t":{"20":{"position":[[16,2]]},"41":{"position":[[2145,2]]},"87":{"position":[[464,2],[2336,2],[4144,2],[6408,2],[9010,2]]}}}],["注意",{"_index":351,"t":{"41":{"position":[[761,2]]},"70":{"position":[[236,2],[1416,2],[1471,2]]},"84":{"position":[[1056,2],[1111,2]]},"87":{"position":[[3864,2],[5146,2]]}}}],["注解",{"_index":515,"t":{"76":{"position":[[605,2],[1139,2],[1697,2],[2401,2]]}}}],["注释",{"_index":557,"t":{"80":{"position":[[136,2]]}}}],["活",{"_index":468,"t":{"70":{"position":[[369,1]]}}}],["活跃",{"_index":596,"t":{"87":{"position":[[10375,2],[11255,2]]}}}],["测试",{"_index":319,"t":{"41":{"position":[[460,2]]}}}],["消息",{"_index":70,"t":{"8":{"position":[[138,2]]},"10":{"position":[[270,2]]},"14":{"position":[[13,2]]},"16":{"position":[[42,2]]},"18":{"position":[[0,2],[7,2],[77,2],[110,2],[141,2],[605,2],[1433,2],[1527,2],[1611,2],[1711,2],[2553,2],[2647,2],[2731,2],[2831,2]]},"20":{"position":[[4,2],[36,2],[49,2],[1270,2],[1293,2]]},"22":{"position":[[7,2]]},"24":{"position":[[32,2],[51,2],[68,2],[87,2],[98,2],[166,2],[187,2],[243,2],[281,2],[327,2],[362,2],[394,2],[2430,2],[2452,2],[2463,2],[2476,2],[2577,2],[2828,2],[3118,2],[3432,2],[3570,2],[3640,2],[4399,2],[4453,2],[4731,2],[4739,2],[4866,2],[4874,2],[5256,2],[5263,2],[5280,2],[5287,2],[5323,2],[5337,2]]},"76":{"position":[[68,2],[110,2],[579,2],[590,2],[706,2],[1113,2],[1124,2],[1239,2],[1671,2],[1682,2],[1813,2],[2375,2],[2386,2],[2504,2]]},"87":{"position":[[1181,2],[1724,2],[3053,2],[3548,2],[4861,2],[5475,2],[7391,2],[8082,2],[10313,2],[11227,2]]}}}],["消耗",{"_index":554,"t":{"80":{"position":[[115,2]]}}}],["添加",{"_index":419,"t":{"59":{"position":[[216,2],[250,2],[569,2],[603,2]]},"70":{"position":[[77,2],[94,2]]},"84":{"position":[[219,2],[253,2],[575,2],[609,2]]}}}],["清晰",{"_index":111,"t":{"10":{"position":[[338,2]]}}}],["源码",{"_index":431,"t":{"61":{"position":[[88,2]]},"80":{"position":[[43,2],[131,2],[162,2]]}}}],["满足",{"_index":220,"t":{"24":{"position":[[2457,2]]},"41":{"position":[[406,2]]}}}],["演示",{"_index":428,"t":{"61":{"position":[[22,2]]}}}],["然后",{"_index":443,"t":{"63":{"position":[[432,2],[993,2],[1580,2],[2265,2],[2903,2]]},"70":{"position":[[90,2]]}}}],["父",{"_index":579,"t":{"87":{"position":[[1241,1],[1784,1],[3113,1],[3608,1],[4921,1],[5535,1],[7523,1],[8175,1],[10435,1],[11315,1]]}}}],["版本",{"_index":297,"t":{"41":{"position":[[241,2]]},"59":{"position":[[164,2],[353,2],[496,2],[705,2],[884,2],[956,2],[961,2],[1193,2],[1209,2],[1306,2],[1373,2],[1466,2],[1537,2],[1604,2],[1726,2],[1881,2],[2008,2]]},"70":{"position":[[164,2],[226,2],[526,2],[641,2],[769,2],[883,2],[1043,2],[1244,2],[1621,2],[1738,2],[1754,2],[1853,2],[1941,2],[2057,2],[2072,2],[2171,2],[2292,2],[2447,2],[2576,2]]},"80":{"position":[[180,2]]},"84":{"position":[[167,2],[359,2],[502,2],[714,2],[896,2],[1264,2],[1280,2],[1379,2],[1446,2],[1538,2],[1609,2],[1674,2],[1796,2],[1951,2],[2080,2]]}}}],["特殊",{"_index":115,"t":{"10":{"position":[[358,2]]},"76":{"position":[[577,2],[1111,2],[1669,2],[2373,2]]}}}],["独特",{"_index":95,"t":{"10":{"position":[[207,2]]}}}],["独立",{"_index":74,"t":{"8":{"position":[[203,2],[299,2]]},"57":{"position":[[73,2]]},"82":{"position":[[90,2]]}}}],["环境",{"_index":408,"t":{"55":{"position":[[47,2]]},"63":{"position":[[1215,2]]},"76":{"position":[[1929,2]]},"87":{"position":[[228,2],[1340,2],[3689,2],[5812,2],[8414,2]]}}}],["现实",{"_index":429,"t":{"61":{"position":[[28,2]]}}}],["理所应当",{"_index":129,"t":{"14":{"position":[[44,4]]}}}],["生成",{"_index":563,"t":{"80":{"position":[[164,2]]}}}],["用于",{"_index":155,"t":{"18":{"position":[[245,2],[1039,2],[2159,2]]},"24":{"position":[[2643,2],[2914,2],[3222,2]]},"63":{"position":[[80,2],[642,2],[1224,2],[1826,2],[2467,2]]},"72":{"position":[[36,2]]},"89":{"position":[[21,2]]}}}],["用户",{"_index":212,"t":{"24":{"position":[[850,2],[5001,2]]},"63":{"position":[[6,2]]},"76":{"position":[[105,2],[127,2],[146,2]]}}}],["用来",{"_index":210,"t":{"24":{"position":[[399,2]]}}}],["由此",{"_index":559,"t":{"80":{"position":[[145,2]]}}}],["疑惑",{"_index":545,"t":{"80":{"position":[[68,2],[215,2]]}}}],["疑问",{"_index":540,"t":{"78":{"position":[[82,2]]}}}],["的话",{"_index":417,"t":{"59":{"position":[[196,2],[549,2]]},"84":{"position":[[199,2],[555,2]]},"87":{"position":[[6402,2],[7716,2],[9004,2]]}}}],["监听",{"_index":399,"t":{"41":{"position":[[2152,2]]},"76":{"position":[[20,2],[25,2],[37,2],[684,2],[700,2],[1217,2],[1233,2],[1791,2],[1807,2],[2482,2],[2498,2]]}}}],["目前",{"_index":318,"t":{"41":{"position":[[458,2],[681,2]]}}}],["目录",{"_index":403,"t":{"43":{"position":[[1,2]]}}}],["目标",{"_index":170,"t":{"18":{"position":[[587,2],[1425,2],[1519,2],[1603,2],[1703,2],[2545,2],[2639,2],[2723,2],[2823,2]]}}}],["目的",{"_index":122,"t":{"10":{"position":[[393,2]]}}}],["直到",{"_index":577,"t":{"87":{"position":[[1203,2],[1746,2],[3075,2],[3570,2],[4883,2],[5497,2],[7485,2],[8137,2],[10397,2],[11277,2]]}}}],["直接",{"_index":80,"t":{"8":{"position":[[250,2]]},"18":{"position":[[3330,2]]},"24":{"position":[[3547,2],[3636,2],[3751,2],[3977,2],[4246,2],[4603,2]]},"32":{"position":[[104,2]]},"41":{"position":[[262,2],[1378,2],[1388,2],[2130,2]]},"63":{"position":[[606,2],[1167,2],[1754,2]]}}}],["相关",{"_index":81,"t":{"8":{"position":[[261,2]]},"18":{"position":[[9,2]]},"41":{"position":[[772,2]]},"80":{"position":[[213,2]]},"87":{"position":[[160,2],[1959,2],[3804,2],[5744,2],[8346,2]]}}}],["相同",{"_index":379,"t":{"41":{"position":[[1025,2],[1130,2]]}}}],["相当于",{"_index":407,"t":{"55":{"position":[[30,3]]}}}],["省略",{"_index":186,"t":{"18":{"position":[[3635,2],[3839,2]]},"20":{"position":[[459,2],[880,2]]},"87":{"position":[[2047,2],[6393,2],[7707,2],[8995,2]]},"89":{"position":[[117,2],[251,2],[474,2],[802,2]]}}}],["看看",{"_index":204,"t":{"24":{"position":[[61,2]]}}}],["真正",{"_index":444,"t":{"63":{"position":[[435,2],[996,2],[1583,2],[2268,2],[2906,2]]}}}],["确保",{"_index":582,"t":{"87":{"position":[[1331,2]]}}}],["示例",{"_index":154,"t":{"18":{"position":[[215,2]]},"32":{"position":[[25,2]]},"34":{"position":[[2,2],[524,2]]},"43":{"position":[[19,2]]},"61":{"position":[[205,2]]},"87":{"position":[[1313,2],[3185,2],[4993,2],[7557,2],[10583,2]]}}}],["社区",{"_index":538,"t":{"78":{"position":[[77,2]]},"80":{"position":[[63,2],[209,2]]}}}],["票据",{"_index":281,"t":{"39":{"position":[[51,2]]}}}],["禁用",{"_index":302,"t":{"41":{"position":[[264,2],[430,2],[481,2],[534,2]]},"87":{"position":[[334,2],[2206,2],[4014,2],[5994,2],[8596,2]]}}}],["私信",{"_index":142,"t":{"18":{"position":[[137,2]]}}}],["种",{"_index":258,"t":{"24":{"position":[[5427,1],[5834,1],[6297,1]]}}}],["秒",{"_index":348,"t":{"41":{"position":[[742,1]]}}}],["积极",{"_index":534,"t":{"78":{"position":[[44,2]]}}}],["移除",{"_index":426,"t":{"59":{"position":[[1821,2],[2103,2]]},"70":{"position":[[2387,2],[2671,2]]},"76":{"position":[[581,2],[1115,2],[1673,2],[2377,2]]},"84":{"position":[[1891,2],[2175,2]]}}}],["程序",{"_index":458,"t":{"70":{"position":[[266,2],[302,2],[366,2]]},"78":{"position":[[6,2]]}}}],["程序运行",{"_index":465,"t":{"70":{"position":[[337,4]]}}}],["程度",{"_index":368,"t":{"41":{"position":[[894,2]]}}}],["稳定",{"_index":299,"t":{"41":{"position":[[247,2]]},"87":{"position":[[2165,2]]}}}],["空格",{"_index":514,"t":{"76":{"position":[[599,2],[617,2],[1133,2],[1151,2],[1691,2],[1709,2],[2395,2],[2413,2]]}}}],["章节",{"_index":262,"t":{"32":{"position":[[1,2]]},"72":{"position":[[109,2]]}}}],["第三方",{"_index":524,"t":{"76":{"position":[[1912,3]]}}}],["等",{"_index":72,"t":{"8":{"position":[[142,1]]},"10":{"position":[[292,1]]},"18":{"position":[[151,1]]},"41":{"position":[[771,1]]},"59":{"position":[[123,1],[439,1]]},"70":{"position":[[69,1]]},"74":{"position":[[245,1]]},"76":{"position":[[2517,1]]},"84":{"position":[[126,1],[445,1]]},"87":{"position":[[9249,1],[11087,1]]}}}],["等价",{"_index":591,"t":{"87":{"position":[[9268,2],[11106,2]]}}}],["等待",{"_index":360,"t":{"41":{"position":[[843,2],[882,2]]}}}],["简",{"_index":270,"t":{"34":{"position":[[523,1]]}}}],["简化版",{"_index":581,"t":{"87":{"position":[[1309,3],[3181,3],[4989,3],[7553,3],[10579,3]]}}}],["简单",{"_index":153,"t":{"18":{"position":[[212,2]]},"43":{"position":[[17,2]]}}}],["简称",{"_index":4,"t":{"2":{"position":[[21,2],[46,2]]}}}],["篇",{"_index":498,"t":{"74":{"position":[[257,1]]}}}],["类",{"_index":227,"t":{"24":{"position":[[2519,1]]},"61":{"position":[[111,1]]},"74":{"position":[[29,1]]}}}],["类似",{"_index":395,"t":{"41":{"position":[[2117,2]]},"76":{"position":[[122,2]]}}}],["类型",{"_index":50,"t":{"6":{"position":[[105,2]]},"8":{"position":[[153,2]]},"10":{"position":[[135,2],[182,2]]},"24":{"position":[[55,2],[2432,2],[2454,2],[2471,2],[2478,2],[2572,2],[2830,2],[3120,2],[3434,2],[5289,2],[5428,2],[5835,2],[6298,2]]},"41":{"position":[[1023,2],[2052,2]]},"76":{"position":[[689,2],[703,2],[1222,2],[1236,2],[1796,2],[1810,2],[1920,2],[2487,2],[2501,2],[2521,2]]},"87":{"position":[[628,2],[718,2],[844,2],[1559,2],[2500,2],[2590,2],[2716,2],[3383,2],[4308,2],[4398,2],[4524,2],[5310,2],[6623,2],[6737,2],[6933,2],[7839,2],[9380,2],[9491,2],[9756,2],[10829,2]]}}}],["粗体",{"_index":243,"t":{"24":{"position":[[3702,2]]}}}],["精力",{"_index":555,"t":{"80":{"position":[[117,2]]}}}],["精力有限",{"_index":551,"t":{"80":{"position":[[101,4]]}}}],["紧随",{"_index":562,"t":{"80":{"position":[[160,2]]}}}],["线程",{"_index":466,"t":{"70":{"position":[[359,2]]},"87":{"position":[[7482,2],[8134,2]]}}}],["组件",{"_index":6,"t":{"2":{"position":[[40,2],[53,2],[65,2],[100,2]]},"4":{"position":[[14,2]]},"10":{"position":[[96,2],[201,2]]},"14":{"position":[[38,2]]},"24":{"position":[[4,2],[20,2],[2441,2]]},"32":{"position":[[47,2]]},"37":{"position":[[31,2]]},"43":{"position":[[14,2]]},"66":{"position":[[117,2]]},"70":{"position":[[273,2],[546,2],[789,2],[1120,2]]}}}],["组合",{"_index":580,"t":{"87":{"position":[[1267,2],[1810,2],[3139,2],[3634,2],[4947,2],[5561,2],[7413,2]]}}}],["终止",{"_index":462,"t":{"70":{"position":[[309,2]]},"87":{"position":[[10518,2],[11436,2]]}}}],["结构",{"_index":485,"t":{"72":{"position":[[135,2]]}}}],["结果",{"_index":175,"t":{"18":{"position":[[777,2],[1850,2],[2970,2],[3047,2],[3526,2],[3721,2],[3925,2]]},"63":{"position":[[442,2],[1003,2],[1590,2],[2275,2],[2913,2]]},"87":{"position":[[9301,2],[9691,2],[10090,2],[10218,2],[11029,2]]},"89":{"position":[[591,2],[919,2]]}}}],["绝大多数",{"_index":27,"t":{"2":{"position":[[218,4]]}}}],["统一",{"_index":57,"t":{"6":{"position":[[137,2]]},"8":{"position":[[172,2],[234,2]]}}}],["维持",{"_index":464,"t":{"70":{"position":[[335,2]]}}}],["缓存",{"_index":288,"t":{"41":{"position":[[96,2],[411,2],[565,2]]}}}],["缓存数据",{"_index":315,"t":{"41":{"position":[[446,4],[502,4]]}}}],["编",{"_index":450,"t":{"66":{"position":[[1,1]]}}}],["编写",{"_index":14,"t":{"2":{"position":[[111,2]]},"66":{"position":[[121,2]]},"76":{"position":[[16,2]]},"80":{"position":[[106,2]]}}}],["编译",{"_index":86,"t":{"8":{"position":[[274,2]]}}}],["编译器",{"_index":87,"t":{"8":{"position":[[279,3]]}}}],["网",{"_index":32,"t":{"2":{"position":[[243,1]]},"55":{"position":[[82,1]]},"80":{"position":[[11,1]]}}}],["网站",{"_index":548,"t":{"80":{"position":[[78,2],[233,2]]}}}],["翻阅",{"_index":542,"t":{"80":{"position":[[45,2]]}}}],["考虑",{"_index":352,"t":{"41":{"position":[[763,2]]},"70":{"position":[[42,2]]},"80":{"position":[[226,2]]}}}],["而言",{"_index":298,"t":{"41":{"position":[[243,2]]}}}],["聊天",{"_index":123,"t":{"14":{"position":[[4,2]]},"18":{"position":[[108,2],[139,2]]}}}],["能力",{"_index":67,"t":{"8":{"position":[[117,2],[143,2],[188,2]]},"10":{"position":[[209,2],[245,2]]},"14":{"position":[[56,2]]},"70":{"position":[[342,2]]},"80":{"position":[[27,2]]},"82":{"position":[[138,2]]}}}],["能够",{"_index":208,"t":{"24":{"position":[[102,2]]},"70":{"position":[[263,2]]}}}],["脑瓜儿",{"_index":375,"t":{"41":{"position":[[922,3]]}}}],["自动",{"_index":412,"t":{"59":{"position":[[103,2],[230,2],[419,2],[583,2]]},"70":{"position":[[307,2]]},"80":{"position":[[185,2]]},"84":{"position":[[106,2],[233,2],[425,2],[589,2]]},"87":{"position":[[224,2],[5808,2],[8410,2]]}}}],["自定义",{"_index":242,"t":{"24":{"position":[[3555,3]]},"72":{"position":[[278,3],[436,3]]},"87":{"position":[[370,3],[2242,3],[4050,3],[6048,3],[8650,3]]}}}],["自然",{"_index":200,"t":{"24":{"position":[[26,2],[100,2]]}}}],["自行",{"_index":158,"t":{"18":{"position":[[274,2],[1068,2],[2188,2]]},"24":{"position":[[2632,2],[2903,2],[3211,2],[3618,2]]},"63":{"position":[[109,2],[671,2],[1253,2],[1855,2],[2496,2]]},"70":{"position":[[362,2]]}}}],["自身",{"_index":574,"t":{"87":{"position":[[1089,2],[2961,2],[4769,2],[7266,2],[10155,2]]}}}],["至少",{"_index":453,"t":{"68":{"position":[[7,2]]}}}],["范围",{"_index":332,"t":{"41":{"position":[[526,2]]}}}],["获取",{"_index":176,"t":{"18":{"position":[[1012,2],[2132,2]]},"61":{"position":[[129,2]]},"63":{"position":[[2,2],[1799,2],[2440,2]]},"89":{"position":[[78,2],[259,2]]}}}],["衍生",{"_index":575,"t":{"87":{"position":[[1153,2],[1696,2],[3025,2],[3520,2],[4833,2],[5447,2],[7363,2],[8054,2],[10285,2],[11199,2]]}}}],["表现",{"_index":252,"t":{"24":{"position":[[5018,2]]},"41":{"position":[[2099,2]]}}}],["要",{"_index":166,"t":{"18":{"position":[[508,1]]},"63":{"position":[[343,1],[904,1],[1491,1],[2168,1],[2809,1]]},"72":{"position":[[336,1],[494,1]]}}}],["要求",{"_index":504,"t":{"76":{"position":[[77,2],[1901,2]]}}}],["覆盖",{"_index":387,"t":{"41":{"position":[[1347,2],[1392,2]]}}}],["观察",{"_index":304,"t":{"41":{"position":[[271,2]]}}}],["规律",{"_index":435,"t":{"61":{"position":[[121,2]]}}}],["角色",{"_index":214,"t":{"24":{"position":[[864,2]]}}}],["解决方案",{"_index":45,"t":{"6":{"position":[[64,4]]},"8":{"position":[[73,4]]},"45":{"position":[[71,4],[165,4]]},"47":{"position":[[61,4]]},"49":{"position":[[78,4]]},"57":{"position":[[61,4]]},"82":{"position":[[78,4]]}}}],["解析",{"_index":197,"t":{"20":{"position":[[1288,2]]},"24":{"position":[[3765,2],[4611,2],[4727,2],[4862,2]]}}}],["触发",{"_index":370,"t":{"41":{"position":[[899,2]]},"87":{"position":[[724,2],[1565,2],[2596,2],[3389,2],[4404,2],[5316,2],[6743,2],[7845,2],[9497,2],[10835,2]]}}}],["言",{"_index":207,"t":{"24":{"position":[[94,1]]}}}],["订阅",{"_index":63,"t":{"8":{"position":[[70,2],[135,2],[185,2]]},"10":{"position":[[263,2]]},"20":{"position":[[27,2],[34,2]]},"39":{"position":[[40,2]]},"45":{"position":[[156,2]]},"49":{"position":[[69,2]]},"82":{"position":[[69,2],[136,2]]},"87":{"position":[[622,2],[862,2],[1179,2],[1466,2],[1722,2],[2494,2],[2734,2],[3051,2],[3290,2],[3546,2],[4302,2],[4542,2],[4859,2],[5217,2],[5473,2],[6617,2],[6951,2],[7389,2],[7722,2],[8080,2],[9374,2],[9774,2],[10311,2],[10715,2],[11225,2]]}}}],["记得",{"_index":594,"t":{"87":{"position":[[10170,2],[10326,2]]}}}],["设置",{"_index":306,"t":{"41":{"position":[[380,2]]}}}],["访问",{"_index":276,"t":{"39":{"position":[[13,2]]}}}],["试",{"_index":291,"t":{"41":{"position":[[199,1]]}}}],["试试看",{"_index":530,"t":{"78":{"position":[[19,3]]}}}],["详细",{"_index":145,"t":{"18":{"position":[[153,2]]}}}],["语言",{"_index":13,"t":{"2":{"position":[[109,2]]}}}],["说",{"_index":505,"t":{"76":{"position":[[90,1]]}}}],["说明",{"_index":560,"t":{"80":{"position":[[155,2]]}}}],["请",{"_index":469,"t":{"70":{"position":[[528,1],[771,1],[1045,1],[1470,1]]},"84":{"position":[[1110,1]]},"87":{"position":[[3863,1],[5145,1]]}}}],["请求",{"_index":44,"t":{"6":{"position":[[53,2],[60,2]]},"8":{"position":[[53,2],[60,2]]},"18":{"position":[[247,2],[509,2],[1041,2],[1845,2],[2161,2],[2965,2],[3341,2],[3716,2],[3920,2]]},"41":{"position":[[873,2],[1289,2]]},"45":{"position":[[60,2],[67,2],[143,2],[150,2]]},"47":{"position":[[50,2],[57,2]]},"49":{"position":[[56,2],[63,2]]},"57":{"position":[[50,2],[57,2]]},"63":{"position":[[82,2],[344,2],[644,2],[905,2],[1226,2],[1492,2],[1828,2],[2169,2],[2469,2],[2810,2]]},"82":{"position":[[56,2],[63,2]]},"87":{"position":[[187,2],[339,2],[1986,2],[2211,2],[3831,2],[4019,2],[5113,2],[5771,2],[5999,2],[8373,2],[8601,2]]},"89":{"position":[[23,2],[314,2],[586,2],[914,2]]}}}],["调",{"_index":362,"t":{"41":{"position":[[859,1]]}}}],["调用",{"_index":353,"t":{"41":{"position":[[765,2],[901,2]]},"87":{"position":[[1141,2],[1219,2],[1684,2],[1762,2],[3013,2],[3091,2],[3508,2],[3586,2],[4821,2],[4899,2],[5435,2],[5513,2],[7343,2],[7501,2],[8034,2],[8153,2],[9210,2],[10268,2],[10413,2],[11048,2],[11182,2],[11293,2]]}}}],["贡献",{"_index":339,"t":{"41":{"position":[[578,2]]}}}],["资源",{"_index":232,"t":{"24":{"position":[[2638,2],[2909,2],[3217,2],[5355,2]]},"72":{"position":[[7,2],[156,2],[286,2],[444,2]]}}}],["赘述",{"_index":151,"t":{"18":{"position":[[178,2]]}}}],["超时",{"_index":384,"t":{"41":{"position":[[1294,2],[1972,2]]},"87":{"position":[[343,2],[373,2],[2215,2],[2245,2],[4023,2],[4053,2],[6003,2],[6051,2],[8605,2],[8653,2]]}}}],["路径",{"_index":137,"t":{"18":{"position":[[18,2]]},"61":{"position":[[41,2]]},"72":{"position":[[123,2],[230,2],[293,2],[451,2]]}}}],["身份",{"_index":274,"t":{"39":{"position":[[6,2]]}}}],["转化",{"_index":595,"t":{"87":{"position":[[10370,2],[11250,2]]}}}],["软件",{"_index":124,"t":{"14":{"position":[[6,2]]}}}],["轻松",{"_index":119,"t":{"10":{"position":[[378,2]]}}}],["较",{"_index":415,"t":{"59":{"position":[[161,1],[493,1],[1186,1],[1299,1],[1366,1],[1459,1],[1530,1],[1597,1],[1719,1],[2001,1]]},"70":{"position":[[1614,1],[1731,1],[1846,1],[1934,1],[2050,1],[2164,1],[2285,1],[2569,1]]},"84":{"position":[[164,1],[499,1],[1257,1],[1372,1],[1439,1],[1531,1],[1602,1],[1667,1],[1789,1],[2073,1]]}}}],["较为",{"_index":77,"t":{"8":{"position":[[232,2]]}}}],["达到",{"_index":68,"t":{"8":{"position":[[122,2]]}}}],["达成",{"_index":120,"t":{"10":{"position":[[389,2]]}}}],["过度",{"_index":53,"t":{"6":{"position":[[119,2]]}}}],["过程",{"_index":185,"t":{"18":{"position":[[3633,2],[3837,2]]},"20":{"position":[[457,2],[878,2]]},"89":{"position":[[121,2],[249,2],[472,2],[800,2]]}}}],["运行",{"_index":459,"t":{"70":{"position":[[270,2]]}}}],["返回",{"_index":445,"t":{"63":{"position":[[444,2],[1005,2],[1592,2],[2277,2],[2915,2]]},"87":{"position":[[9295,2],[9685,2],[10084,2],[11023,2]]}}}],["返回值",{"_index":522,"t":{"76":{"position":[[1841,3],[1906,3],[2525,3]]}}}],["还是",{"_index":237,"t":{"24":{"position":[[2723,2],[3003,2],[3317,2]]}}}],["这个",{"_index":510,"t":{"76":{"position":[[575,2],[1109,2],[1667,2],[2371,2]]}}}],["这些",{"_index":223,"t":{"24":{"position":[[2474,2]]}}}],["这方面",{"_index":130,"t":{"14":{"position":[[52,3]]}}}],["这里",{"_index":148,"t":{"18":{"position":[[173,2]]}}}],["进行",{"_index":202,"t":{"24":{"position":[[36,2]]},"32":{"position":[[113,2]]},"39":{"position":[[8,2],[149,2]]},"41":{"position":[[752,2],[839,2],[1284,2]]},"72":{"position":[[254,2]]},"87":{"position":[[179,2],[1978,2],[3823,2],[5105,2],[5763,2],[8365,2]]}}}],["连接",{"_index":277,"t":{"39":{"position":[[27,2],[151,2]]},"41":{"position":[[1970,2]]},"45":{"position":[[161,2]]},"49":{"position":[[74,2]]},"70":{"position":[[1390,2]]},"82":{"position":[[74,2]]},"87":{"position":[[192,2],[538,2],[743,2],[990,2],[1166,2],[1584,2],[1709,2],[1991,2],[2410,2],[2615,2],[2862,2],[3038,2],[3408,2],[3533,2],[3836,2],[4218,2],[4423,2],[4670,2],[4846,2],[5118,2],[5335,2],[5460,2],[5776,2],[6500,2],[6762,2],[7097,2],[7376,2],[7864,2],[8067,2],[8378,2],[9099,2],[9516,2],[9917,2],[10298,2],[10854,2],[11212,2]]}}}],["选",{"_index":168,"t":{"18":{"position":[[527,1]]},"41":{"position":[[6,1]]},"63":{"position":[[362,1],[923,1],[1510,1],[2187,1],[2828,1]]},"87":{"position":[[2038,1]]}}}],["选择",{"_index":160,"t":{"18":{"position":[[279,2],[1073,2],[2193,2]]},"24":{"position":[[2716,2],[2996,2],[3310,2],[5432,2],[5439,2],[5839,2],[5846,2],[6302,2],[6309,2]]},"32":{"position":[[102,2]]},"59":{"position":[[105,2],[232,2],[421,2],[585,2],[809,2],[979,2],[986,2],[1039,2]]},"61":{"position":[[194,2]]},"63":{"position":[[114,2],[676,2],[1258,2],[1860,2],[2501,2]]},"70":{"position":[[353,2],[1313,2],[1366,2],[1423,2]]},"84":{"position":[[108,2],[235,2],[427,2],[591,2],[818,2],[971,2],[1024,2],[1063,2]]},"87":{"position":[[3866,2],[5148,2]]}}}],["透明",{"_index":108,"t":{"10":{"position":[[327,2]]}}}],["通常",{"_index":224,"t":{"24":{"position":[[2480,2]]},"32":{"position":[[41,2]]},"61":{"position":[[141,2]]}}}],["通用",{"_index":382,"t":{"41":{"position":[[1080,2]]},"80":{"position":[[25,2]]}}}],["通知",{"_index":309,"t":{"41":{"position":[[402,2]]}}}],["通过",{"_index":138,"t":{"18":{"position":[[62,2],[3332,2]]},"20":{"position":[[32,2]]},"24":{"position":[[840,2],[1971,2],[2627,2],[2898,2],[3206,2],[3519,2],[4361,2],[4605,2],[4725,2],[4860,2]]},"41":{"position":[[397,2],[857,2]]},"59":{"position":[[1769,2],[2051,2]]},"61":{"position":[[76,2]]},"70":{"position":[[278,2],[2335,2],[2619,2]]},"74":{"position":[[32,2]]},"76":{"position":[[602,2],[1136,2],[1694,2],[2398,2]]},"80":{"position":[[41,2]]},"84":{"position":[[1839,2],[2123,2]]},"89":{"position":[[307,2]]}}}],["速率",{"_index":366,"t":{"41":{"position":[[875,2]]}}}],["造成",{"_index":326,"t":{"41":{"position":[[489,2]]}}}],["逻辑",{"_index":499,"t":{"76":{"position":[[5,2]]}}}],["遇到",{"_index":496,"t":{"74":{"position":[[223,2]]},"78":{"position":[[30,2]]}}}],["避免",{"_index":233,"t":{"24":{"position":[[2645,2],[2916,2],[3224,2]]}}}],["那么",{"_index":526,"t":{"76":{"position":[[1923,2]]}}}],["部分",{"_index":84,"t":{"8":{"position":[[271,2]]},"24":{"position":[[38,2]]},"70":{"position":[[1451,2]]},"84":{"position":[[1091,2]]}}}],["部署",{"_index":566,"t":{"80":{"position":[[187,2]]}}}],["都",{"_index":30,"t":{"2":{"position":[[233,1]]},"18":{"position":[[15,1],[522,1]]},"22":{"position":[[15,1]]},"41":{"position":[[1094,1],[1481,1],[1539,1]]},"61":{"position":[[38,1]]},"63":{"position":[[357,1],[918,1],[1505,1],[2182,1],[2823,1]]},"87":{"position":[[6398,1],[7712,1],[9000,1],[9275,1],[11113,1]]},"89":{"position":[[39,1]]}}}],["配合",{"_index":195,"t":{"20":{"position":[[1276,2]]}}}],["配置",{"_index":184,"t":{"18":{"position":[[3487,2],[3631,2],[3835,2]]},"20":{"position":[[151,2],[455,2],[876,2]]},"32":{"position":[[115,2]]},"41":{"position":[[2,2],[107,2],[616,2],[754,2],[833,2],[886,2],[1020,2],[1083,2],[1091,2],[1128,2],[1298,2],[1354,2],[1496,2],[2159,2]]},"59":{"position":[[1818,2],[1827,2],[2100,2],[2109,2]]},"70":{"position":[[2384,2],[2393,2],[2668,2],[2677,2]]},"72":{"position":[[38,2],[220,2],[256,2],[281,2],[439,2]]},"84":{"position":[[1888,2],[1897,2],[2172,2],[2181,2]]},"87":{"position":[[163,2],[174,2],[218,2],[345,2],[375,2],[1962,2],[1973,2],[2217,2],[2247,2],[3807,2],[3818,2],[4025,2],[4055,2],[5100,2],[5682,2],[5747,2],[5758,2],[5802,2],[6005,2],[6053,2],[8284,2],[8349,2],[8360,2],[8404,2],[8607,2],[8655,2]]},"89":{"position":[[119,2],[247,2],[470,2],[798,2]]}}}],["配置文件",{"_index":263,"t":{"32":{"position":[[12,4],[37,4]]},"37":{"position":[[22,4]]},"72":{"position":[[44,4],[97,4],[115,4],[249,4]]}}}],["里",{"_index":519,"t":{"76":{"position":[[695,1],[1228,1],[1802,1],[2493,1]]}}}],["重构",{"_index":293,"t":{"41":{"position":[[225,2]]}}}],["重载",{"_index":178,"t":{"18":{"position":[[1447,2],[2567,2]]}}}],["鉴",{"_index":163,"t":{"18":{"position":[[391,1],[1263,1],[2383,1]]},"63":{"position":[[226,1],[787,1],[1374,1],[2050,1],[2691,1]]}}}],["针对",{"_index":47,"t":{"6":{"position":[[83,2]]},"10":{"position":[[128,2]]},"16":{"position":[[19,2]]},"41":{"position":[[1037,2]]},"89":{"position":[[9,2]]}}}],["链接",{"_index":472,"t":{"70":{"position":[[536,2],[651,2],[779,2],[893,2],[1053,2],[1254,2]]}}}],["问题",{"_index":334,"t":{"41":{"position":[[544,2],[774,2]]},"78":{"position":[[37,2],[48,2],[74,2]]},"89":{"position":[[73,2]]}}}],["阻塞",{"_index":520,"t":{"76":{"position":[[1251,2],[1854,2],[2538,2]]},"87":{"position":[[7478,2],[8130,2],[9212,2],[9277,2],[11050,2],[11115,2]]}}}],["附件",{"_index":231,"t":{"24":{"position":[[2566,2]]}}}],["降低",{"_index":369,"t":{"41":{"position":[[897,2]]}}}],["限制",{"_index":371,"t":{"41":{"position":[[905,2]]},"70":{"position":[[1411,2],[1483,2]]},"84":{"position":[[1051,2],[1123,2]]}}}],["除了",{"_index":218,"t":{"24":{"position":[[2414,2]]}}}],["随便",{"_index":376,"t":{"41":{"position":[[925,2]]}}}],["随意",{"_index":481,"t":{"72":{"position":[[67,2]]}}}],["随着",{"_index":564,"t":{"80":{"position":[[178,2]]}}}],["隐藏",{"_index":244,"t":{"24":{"position":[[3723,2],[3924,2],[4193,2]]}}}],["需",{"_index":280,"t":{"39":{"position":[[44,1]]}}}],["需求",{"_index":222,"t":{"24":{"position":[[2467,2]]}}}],["需要",{"_index":157,"t":{"18":{"position":[[272,2],[281,2],[1066,2],[1075,2],[2186,2],[2195,2],[3352,2]]},"20":{"position":[[9,2]]},"24":{"position":[[2824,2],[3114,2],[3428,2],[5437,2],[5844,2],[6307,2]]},"41":{"position":[[759,2]]},"59":{"position":[[246,2],[599,2]]},"61":{"position":[[98,2]]},"63":{"position":[[107,2],[116,2],[669,2],[678,2],[1251,2],[1260,2],[1853,2],[1862,2],[2494,2],[2503,2]]},"70":{"position":[[100,2],[259,2],[1421,2]]},"74":{"position":[[23,2]]},"76":{"position":[[1910,2]]},"84":{"position":[[249,2],[605,2],[1061,2]]},"87":{"position":[[1329,2],[10167,2],[10323,2]]},"89":{"position":[[40,2]]}}}],["非",{"_index":523,"t":{"76":{"position":[[1853,1],[2537,1]]}}}],["非必要",{"_index":588,"t":{"87":{"position":[[2172,3]]}}}],["项",{"_index":378,"t":{"41":{"position":[[1022,1],[1085,1],[1093,1],[2161,1]]}}}],["项目",{"_index":35,"t":{"4":{"position":[[18,2]]},"6":{"position":[[17,2]]},"8":{"position":[[17,2]]},"10":{"position":[[24,2],[85,2]]},"32":{"position":[[65,2]]},"45":{"position":[[24,2],[107,2]]},"47":{"position":[[14,2]]},"49":{"position":[[20,2]]},"57":{"position":[[14,2]]},"66":{"position":[[150,2]]},"70":{"position":[[18,2],[37,2]]},"72":{"position":[[5,2],[133,2]]},"76":{"position":[[1927,2]]},"82":{"position":[[20,2]]}}}],["顾名思义",{"_index":380,"t":{"41":{"position":[[1028,4]]}}}],["预",{"_index":324,"t":{"41":{"position":[[479,1]]}}}],["预期",{"_index":308,"t":{"41":{"position":[[392,2]]},"78":{"position":[[33,2]]}}}],["预防",{"_index":495,"t":{"74":{"position":[[211,2]]}}}],["频率",{"_index":354,"t":{"41":{"position":[[767,2],[903,2]]}}}],["频道",{"_index":141,"t":{"18":{"position":[[106,2]]},"24":{"position":[[859,2]]},"41":{"position":[[602,2],[656,2],[703,2]]},"76":{"position":[[65,2]]},"78":{"position":[[14,2]]},"89":{"position":[[80,2],[261,2]]}}}],["额外",{"_index":65,"t":{"8":{"position":[[97,2]]},"41":{"position":[[1135,2]]},"70":{"position":[[92,2]]}}}],["风格",{"_index":56,"t":{"6":{"position":[[135,2]]},"8":{"position":[[170,2],[237,2]]},"10":{"position":[[146,2]]},"22":{"position":[[31,2]]},"72":{"position":[[137,2]]}}}],["风险",{"_index":372,"t":{"41":{"position":[[908,2]]}}}],["首先",{"_index":188,"t":{"20":{"position":[[7,2]]},"24":{"position":[[58,2]]},"68":{"position":[[0,2]]},"70":{"position":[[21,2]]},"80":{"position":[[127,2]]}}}],["验证",{"_index":446,"t":{"63":{"position":[[450,2],[1011,2],[1598,2],[2283,2],[2921,2]]}}}],["高级",{"_index":97,"t":{"10":{"position":[[221,2],[252,2]]}}}],["默认",{"_index":213,"t":{"24":{"position":[[853,2]]},"41":{"position":[[35,2],[714,2],[879,2],[1352,2],[1483,2],[1984,2],[2069,2]]},"59":{"position":[[1764,2],[2046,2]]},"70":{"position":[[2330,2],[2614,2]]},"72":{"position":[[299,2],[457,2]]},"84":{"position":[[1834,2],[2118,2]]},"87":{"position":[[215,2],[305,2],[2013,2],[2122,2],[3960,2],[5799,2],[5947,2],[6400,2],[7714,2],[8401,2],[8549,2],[9002,2]]}}}],["默认值",{"_index":373,"t":{"41":{"position":[[912,3]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file +[{"documents":[{"i":1,"t":"首页","u":"/docs/","b":["文档"]},{"i":11,"t":"消息","u":"/docs/basic/message","b":["文档","基础内容"]},{"i":27,"t":"角色操作","u":"/docs/basic/role","b":["文档","基础内容"]},{"i":29,"t":"未知事件处理","u":"/docs/basic/unknown-event","b":["文档","基础内容"]},{"i":31,"t":"BOT配置文件","u":"/docs/bot-config/","b":["文档"]},{"i":42,"t":"快速开始","u":"/docs/quick-start/","b":["文档","快速开始🚀"]},{"i":54,"t":"使用API","u":"/docs/quick-start/api","b":["文档","快速开始🚀"]},{"i":62,"t":"使用SpringBoot","u":"/docs/quick-start/spring-boot","b":["文档","快速开始🚀"]},{"i":79,"t":"使用simbot核心库","u":"/docs/quick-start/simbot-core","b":["文档","快速开始🚀"]},{"i":81,"t":"使用标准库","u":"/docs/quick-start/stdlib","b":["文档","快速开始🚀"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,2.536]],["t/11",[1,2.536]],["t/27",[2,2.032,3,2.032]],["t/29",[4,2.032,5,2.032]],["t/31",[6,0.912,7,2.032]],["t/42",[8,2.032,9,2.032]],["t/54",[6,0.912,10,0.912]],["t/62",[6,0.912,10,0.912]],["t/79",[6,0.652,10,0.652,11,1.454,12,1.081]],["t/81",[10,0.76,12,1.261,13,1.695]]],"invertedIndex":[["",{"_index":6,"t":{"31":{"position":[[0,3]]},"54":{"position":[[2,3]]},"62":{"position":[[2,10]]},"79":{"position":[[2,6]]}}}],["使用",{"_index":10,"t":{"54":{"position":[[0,2]]},"62":{"position":[[0,2]]},"79":{"position":[[0,2]]},"81":{"position":[[0,2]]}}}],["处理",{"_index":5,"t":{"29":{"position":[[4,2]]}}}],["库",{"_index":12,"t":{"79":{"position":[[10,1]]},"81":{"position":[[4,1]]}}}],["开始",{"_index":9,"t":{"42":{"position":[[2,2]]}}}],["快速",{"_index":8,"t":{"42":{"position":[[0,2]]}}}],["操作",{"_index":3,"t":{"27":{"position":[[2,2]]}}}],["未知事件",{"_index":4,"t":{"29":{"position":[[0,4]]}}}],["标准",{"_index":13,"t":{"81":{"position":[[2,2]]}}}],["核心",{"_index":11,"t":{"79":{"position":[[8,2]]}}}],["消息",{"_index":1,"t":{"11":{"position":[[0,2]]}}}],["角色",{"_index":2,"t":{"27":{"position":[[0,2]]}}}],["配置文件",{"_index":7,"t":{"31":{"position":[[3,4]]}}}],["首页",{"_index":0,"t":{"1":{"position":[[0,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"模块简介","u":"/docs/","h":"#模块简介","p":1},{"i":5,"t":"API模块","u":"/docs/","h":"#api模块","p":1},{"i":7,"t":"stdlib 标准库模块","u":"/docs/","h":"#stdlib-标准库模块","p":1},{"i":9,"t":"core 核心库","u":"/docs/","h":"#core-核心库","p":1},{"i":13,"t":"API、标准库","u":"/docs/basic/message","h":"#api标准库","p":11},{"i":15,"t":"发送消息","u":"/docs/basic/message","h":"#发送消息","p":11},{"i":17,"t":"接收消息","u":"/docs/basic/message","h":"#接收消息","p":11},{"i":19,"t":"核心库","u":"/docs/basic/message","h":"#核心库","p":11},{"i":21,"t":"消息元素","u":"/docs/basic/message","h":"#消息元素","p":11},{"i":23,"t":"发送消息","u":"/docs/basic/message","h":"#发送消息-1","p":11},{"i":25,"t":"接收消息","u":"/docs/basic/message","h":"#接收消息-1","p":11},{"i":33,"t":"示例","u":"/docs/bot-config/","h":"#示例","p":31},{"i":35,"t":"属性描述","u":"/docs/bot-config/","h":"#属性描述","p":31},{"i":36,"t":"component","u":"/docs/bot-config/","h":"#component","p":31},{"i":38,"t":"ticket","u":"/docs/bot-config/","h":"#ticket","p":31},{"i":40,"t":"config","u":"/docs/bot-config/","h":"#config","p":31},{"i":44,"t":"文档列表","u":"/docs/quick-start/","h":"#文档列表","p":42},{"i":46,"t":"📄️ 使用API","u":"/docs/quick-start/","h":"","p":42},{"i":48,"t":"📄️ 使用标准库","u":"/docs/quick-start/","h":"","p":42},{"i":50,"t":"📄️ 使用simbot核心库","u":"/docs/quick-start/","h":"","p":42},{"i":52,"t":"📄️ 使用SpringBoot","u":"/docs/quick-start/","h":"","p":42},{"i":56,"t":"安装","u":"/docs/quick-start/api","h":"#安装","p":54},{"i":58,"t":"使用","u":"/docs/quick-start/api","h":"#使用","p":54},{"i":60,"t":"获取用户频道服务器列表","u":"/docs/quick-start/api","h":"#获取用户频道服务器列表","p":54},{"i":63,"t":"前言","u":"/docs/quick-start/spring-boot","h":"#前言","p":62},{"i":65,"t":"前提准备","u":"/docs/quick-start/spring-boot","h":"#前提准备","p":62},{"i":67,"t":"项目构建","u":"/docs/quick-start/spring-boot","h":"#项目构建","p":62},{"i":69,"t":"BOT配置","u":"/docs/quick-start/spring-boot","h":"#bot配置","p":62},{"i":71,"t":"启动类","u":"/docs/quick-start/spring-boot","h":"#启动类","p":62},{"i":73,"t":"监听事件","u":"/docs/quick-start/spring-boot","h":"#监听事件","p":62},{"i":75,"t":"启动","u":"/docs/quick-start/spring-boot","h":"#启动","p":62},{"i":77,"t":"更多","u":"/docs/quick-start/spring-boot","h":"#更多","p":62},{"i":83,"t":"安装","u":"/docs/quick-start/stdlib","h":"#安装","p":81},{"i":85,"t":"使用","u":"/docs/quick-start/stdlib","h":"#使用","p":81},{"i":86,"t":"构建BOT、订阅事件","u":"/docs/quick-start/stdlib","h":"#构建bot订阅事件","p":81},{"i":88,"t":"使用BOT请求API","u":"/docs/quick-start/stdlib","h":"#使用bot请求api","p":81}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,2.41,1,3.276]],["t/5",[0,2.41,2,1.03]],["t/7",[0,1.726,2,0.738,3,1.726,4,1.273]],["t/9",[2,0.86,4,1.484,5,2.012]],["t/13",[2,0.86,3,2.012,4,1.484]],["t/15",[6,2.754,7,1.948]],["t/17",[7,1.948,8,2.754]],["t/19",[4,1.777,5,2.41]],["t/21",[7,1.948,9,3.276]],["t/23",[6,2.754,7,1.948]],["t/25",[7,1.948,8,2.754]],["t/33",[10,4.085]],["t/35",[11,3.276,12,3.276]],["t/36",[2,1.285]],["t/38",[2,1.285]],["t/40",[2,1.285]],["t/44",[13,3.276,14,2.754]],["t/46",[2,1.03,15,1.631]],["t/48",[3,2.012,4,1.484,15,1.361]],["t/50",[2,0.738,4,1.273,5,1.726,15,1.168]],["t/52",[2,1.03,15,1.631]],["t/56",[16,3.434]],["t/58",[15,2.034]],["t/60",[14,1.728,17,2.055,18,2.055,19,2.055,20,2.055]],["t/63",[21,4.085]],["t/65",[22,3.276,23,3.276]],["t/67",[24,3.276,25,2.754]],["t/69",[2,1.03,26,3.276]],["t/71",[27,2.754,28,3.276]],["t/73",[29,3.276,30,2.754]],["t/75",[27,3.434]],["t/77",[31,3.276,32,3.276]],["t/83",[16,3.434]],["t/85",[15,2.034]],["t/86",[2,0.738,25,1.973,30,1.973,33,2.347]],["t/88",[2,1.108,15,1.168,34,2.347]]],"invertedIndex":[["",{"_index":2,"t":{"5":{"position":[[0,3]]},"7":{"position":[[0,6]]},"9":{"position":[[0,4]]},"13":{"position":[[0,3]]},"36":{"position":[[0,9]]},"38":{"position":[[0,6]]},"40":{"position":[[0,6]]},"46":{"position":[[6,3]]},"50":{"position":[[6,6]]},"52":{"position":[[6,10]]},"69":{"position":[[0,3]]},"86":{"position":[[2,3]]},"88":{"position":[[2,3],[7,3]]}}}],["事件",{"_index":30,"t":{"73":{"position":[[2,2]]},"86":{"position":[[8,2]]}}}],["使用",{"_index":15,"t":{"46":{"position":[[4,2]]},"48":{"position":[[4,2]]},"50":{"position":[[4,2]]},"52":{"position":[[4,2]]},"58":{"position":[[0,2]]},"85":{"position":[[0,2]]},"88":{"position":[[0,2]]}}}],["元素",{"_index":9,"t":{"21":{"position":[[2,2]]}}}],["准备",{"_index":23,"t":{"65":{"position":[[2,2]]}}}],["列表",{"_index":14,"t":{"44":{"position":[[2,2]]},"60":{"position":[[9,2]]}}}],["前提",{"_index":22,"t":{"65":{"position":[[0,2]]}}}],["前言",{"_index":21,"t":{"63":{"position":[[0,2]]}}}],["发送",{"_index":6,"t":{"15":{"position":[[0,2]]},"23":{"position":[[0,2]]}}}],["启动",{"_index":27,"t":{"71":{"position":[[0,2]]},"75":{"position":[[0,2]]}}}],["多",{"_index":32,"t":{"77":{"position":[[1,1]]}}}],["安装",{"_index":16,"t":{"56":{"position":[[0,2]]},"83":{"position":[[0,2]]}}}],["属性",{"_index":11,"t":{"35":{"position":[[0,2]]}}}],["库",{"_index":4,"t":{"7":{"position":[[9,1]]},"9":{"position":[[7,1]]},"13":{"position":[[6,1]]},"19":{"position":[[2,1]]},"48":{"position":[[8,1]]},"50":{"position":[[14,1]]}}}],["接收",{"_index":8,"t":{"17":{"position":[[0,2]]},"25":{"position":[[0,2]]}}}],["描述",{"_index":12,"t":{"35":{"position":[[2,2]]}}}],["文档",{"_index":13,"t":{"44":{"position":[[0,2]]}}}],["更",{"_index":31,"t":{"77":{"position":[[0,1]]}}}],["服务器",{"_index":20,"t":{"60":{"position":[[6,3]]}}}],["构建",{"_index":25,"t":{"67":{"position":[[2,2]]},"86":{"position":[[0,2]]}}}],["标准",{"_index":3,"t":{"7":{"position":[[7,2]]},"13":{"position":[[4,2]]},"48":{"position":[[6,2]]}}}],["核心",{"_index":5,"t":{"9":{"position":[[5,2]]},"19":{"position":[[0,2]]},"50":{"position":[[12,2]]}}}],["模块",{"_index":0,"t":{"3":{"position":[[0,2]]},"5":{"position":[[3,2]]},"7":{"position":[[10,2]]}}}],["消息",{"_index":7,"t":{"15":{"position":[[2,2]]},"17":{"position":[[2,2]]},"21":{"position":[[0,2]]},"23":{"position":[[2,2]]},"25":{"position":[[2,2]]}}}],["用户",{"_index":18,"t":{"60":{"position":[[2,2]]}}}],["监听",{"_index":29,"t":{"73":{"position":[[0,2]]}}}],["示例",{"_index":10,"t":{"33":{"position":[[0,2]]}}}],["简介",{"_index":1,"t":{"3":{"position":[[2,2]]}}}],["类",{"_index":28,"t":{"71":{"position":[[2,1]]}}}],["获取",{"_index":17,"t":{"60":{"position":[[0,2]]}}}],["订阅",{"_index":33,"t":{"86":{"position":[[6,2]]}}}],["请求",{"_index":34,"t":{"88":{"position":[[5,2]]}}}],["配置",{"_index":26,"t":{"69":{"position":[[3,2]]}}}],["项目",{"_index":24,"t":{"67":{"position":[[0,2]]}}}],["频道",{"_index":19,"t":{"60":{"position":[[4,2]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"欢迎来到 Simple Robot (下文简称 simbot) 的KOOK机器人组件 (下文简称 KOOK组件) 文档。 KOOK组件是基于 simbot核心库 对 KOOK机器人 的实现。 KOOK组件由Kotlin语言编写,不同的模块分别基于 KMP (Kotlin Multiplatform) 或 Kotlin/JVM 构建。 在JVM平台上对 Java 友好,并基于 KMP 提供更多平台的可能性。 基本功能 对于simbot绝大多数的标准、基本功能的介绍都在 simbot官网 中。","s":"首页","u":"/docs/","h":"","p":1},{"i":4,"t":"simbot的KOOK机器人组件整个项目分为三个主要模块。它们分别是 API模块、stdlib(标准库)模块和core(核心库)模块。","s":"模块简介","u":"/docs/","h":"#模块简介","p":1},{"i":6,"t":"概要 API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。 API模块的主要作用是提供针对KOOK机器人开发平台中的各API和事件类型的底层封装。此模块不提供过度的功能性封装, 主要宗旨为在风格统一的情况下将API和事件描述为可供使用的依赖库。","s":"API模块","u":"/docs/","h":"#api模块","p":1},{"i":8,"t":"概要 标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和 ws 事件订阅的解决方案。 标准库模块依赖API模块,在此基础上额外提供KOOK中 Bot 概念的封装与能力实现,达到对一个 Bot 的事件订阅、消息发送等能力。 与API模块类型,标准库模块的主要宗旨同样是在风格统一的情况下将Bot与事件订阅的能力描述为可供使用的依赖库。 独立 API模块和标准库模块与simbot的关系主要体现在较为统一的风格上。实质上这两个模块不直接依赖与simbot相关的库。(可能存在部分仅编译依赖或编译器插件依赖) 它们两个是可以完全作为独立的底层API依赖库使用的。","s":"stdlib 标准库模块","u":"/docs/","h":"#stdlib-标准库模块","p":1},{"i":10,"t":"概要 核心库模块基于 Kotlin/JVM 构建项目,支持 JVM 平台,兼容并提供友好的Java API。 核心库模块是对simbot核心库的KOOK机器人实现,也是此项目作为“simbot组件”的主要体现。 核心库模块依赖并实现 simbot API,针对其定义的各类型来提供simbot风格的 KOOK API 实现。例如实现 simbot 提供的 Bot 类型为 KookBot 并提供KOOK组件下的各种独特能力。 核心库模块是一种高级封装,它会借助 simbot API 强大的能力来提供大量高级功能,例如对事件的订阅和更便捷的消息发送、对 Spring Boot 的支持等。 核心库模块会尽可能屏蔽掉底层API(上述两个模块),使其对开发者透明,取而代之的是更加清晰明了的API。 概要 当然,对于一些特殊场景或不得已的情况,开发者依旧可以很轻松的使用底层API来达成所求目的。","s":"core 核心库","u":"/docs/","h":"#core-核心库","p":1},{"i":12,"t":"作为一个聊天软件的bot,消息的接收、处理与发送是必不可少的。在 KOOK 组件中,我们理所应当的提供了这方面的能力。","s":"消息","u":"/docs/basic/message","h":"","p":11},{"i":14,"t":"在 API 模块和标准库中,我们提供了针对官方API的对应实现,因此官方的API中对消息的处理是如何的,在这两个模块中就是如何。","s":"API、标准库","u":"/docs/basic/message","h":"#api标准库","p":11},{"i":16,"t":"消息API 与消息相关的API都在包路径 love.forte.simbot.kook.api.message 中。 你可以通过下面这几个 API 来发送消息: SendChannelMessageApi: 发送频道聊天消息 SendDirectMessageApi: 发送私信聊天消息 它们的各个参数等更详细的信息你可以在 API文档 中找到,这里就不再赘述了。 以 SendChannelMessageApi 为例,提供简单的示例: Kotlin Java Java Async // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(CIO) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = SendChannelMessageApi.create(targetId = \"目标ID\", content = \"消息内容\") // 或其他构建方式 SendChannelMessageApi.create { content = \"\" type = 9 type(SendMessageType.KMARKDOWN) nonce = \"nonce\" quote = \"quote\" tempTargetId = \"tempTargetId\" } // 得到结果 val result = api.requestData(client, authorization) println(\"result = $result\") println(\"result.nonce = ${result.nonce}\") println(\"result.msgId = ${result.msgId}\") println(\"result.msgTimestamp = ${result.msgTimestamp}\") // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建api var api = SendChannelMessageApi.create(\"目标ID\", \"消息内容\"); // 或其他重载: SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\"); SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\", \"Quote引用ID\", \"nonce\", \"tempTargetId\"); // 或使用builder: SendChannelMessageApi.builder(\"目标ID\", \"消息内容\") .type(SendMessageType.KMARKDOWN) .content(\"content\") .quote(\"quote\") .nonce(\"nonce\") .tempTargetId(\"tempTargetId\").build(); // 请求并得到结果 var result = api.requestDataBlocking(client, authorization); System.out.println(\"result.getMsgId() = \" + result.getMsgId()); System.out.println(\"result.getNonce() = \" + result.getNonce()); System.out.println(\"result.getMsgTimestamp() = \" + result.getMsgTimestamp()); // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建api var api = SendChannelMessageApi.create(\"目标ID\", \"消息内容\"); // 或其他重载: SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\"); SendChannelMessageApi.create(SendMessageType.KMARKDOWN.getValue(), \"目标ID\", \"消息内容\", \"Quote引用ID\", \"nonce\", \"tempTargetId\"); // 或使用builder: SendChannelMessageApi.builder(\"目标ID\", \"消息内容\") .type(SendMessageType.KMARKDOWN) .content(\"content\") .quote(\"quote\") .nonce(\"nonce\") .tempTargetId(\"tempTargetId\").build(); // 请求并得到结果 api.requestDataAsync(client, authorization).thenAccept(result -> { // 发送后的结果 System.out.println(\"result = \" + result); System.out.println(\"result.getMsgId() = \" + result.getMsgId()); System.out.println(\"result.getNonce() = \" + result.getNonce()); System.out.println(\"result.getMsgTimestamp() = \" + result.getMsgTimestamp()); }); USE BOT 在标准库中,你也可以构建一个 Bot 后直接通过 Bot 作为请求的凭证来源,而不再需要手动准备 HttpClient 和 authorization 了。 Kotlin Java Java Async val bot = BotFactory.create(Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\")) { // 配置... } // 构建api... val api = ... // 得到结果 val result = api.requestBy(bot) // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); // 构建api... var api = ... // 请求并得到结果 var result = api.requestByBlocking(bot); // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); // 构建api... var api = ... // 请求并得到结果 api.requestByAsync(bot).thenAccept(result -> { // ... });","s":"发送消息","u":"/docs/basic/message","h":"#发送消息","p":11},{"i":18,"t":"想要接收消息,首先需要使用核心库注册并启动一个bot来订阅事件。通过订阅消息事件,我们便可以接收到消息。 Kotlin Java Java Async val bot = BotFactory.create(Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\")) { // 配置... } bot.processor { raw -> // this: Event, raw: String println(\"原始JSON: $raw\") println(\"event: $this\") println(\"event.extra: ${this.extra}\") println(\"content: ${this.content}\") } bot.startAndJoin() // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); bot.blockingProcessor(TextEventExtra.class, (event, raw) -> { System.out.println(\"raw = \" + raw); System.out.println(\"event = \" + event); System.out.println(\"event.extra = \" + event.getExtra()); System.out.println(\"content = \" + event.getContent()); }); bot.startBlocking(); bot.joinBlocking(); // 准备Ticket var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot var bot = BotFactory.create(ticket); bot.asyncProcessor(TextEventExtra.class, (event, raw) -> { System.out.println(\"raw = \" + raw); System.out.println(\"event = \" + event); System.out.println(\"event.extra = \" + event.getExtra()); System.out.println(\"content = \" + event.getContent()); return CompletableFuture.completedFuture(null); }); bot.startAsync().join(); 其中的 content 便是消息内容了。配合事件中其他属性便可以解析、处理消息内容了。","s":"接收消息","u":"/docs/basic/message","h":"#接收消息","p":11},{"i":20,"t":"在核心库中,对消息的发送和接收都有着 simbot API 的风格。","s":"核心库","u":"/docs/basic/message","h":"#核心库","p":11},{"i":22,"t":"KOOK组件核心库作为 simbot 的组件库之一,自然会对标准消息元素进行部分支持并提供一些其专属的消息元素类型。首先来看看兼容的标准消息元素: PlainText​ 文本消息。这无需多言,文本消息自然能够被支持。 Kotlin Java Java Async val channel = ... channel.send(\"文本消息\") channel.send(\"文本消息\".toText()) var channel = ... channel.sendBlocking(\"文本消息\"); channel.sendBlocking(Text.of(\"文本消息\")); var channel = ... channel.sendAsync(\"文本消息\"); channel.sendAsync(Text.of(\"文本消息\")); ResourceImage & Image​ 图片消息。可以用来发送图片。 Kotlin Java Java Async val channel = ... channel.send(Path(\"/xx/img.jpg\").toResource().toImage()) var channel = ... var path = Paths.get(\"/xx/img.jpg\"); var resource = Resource.of(path); var resourceImage = Image.of(resource); channel.sendAsync(resourceImage); var channel = ... var path = Paths.get(\"/xx/img.jpg\"); var resource = Resource.of(path); var resourceImage = Image.of(resource); channel.sendAsync(resourceImage); At​ 提及。可以通过 At 提及一个用户(默认)、一个频道或一个角色。 Kotlin Java Java Async val channel = ... val atUser = At(123.ID) val atChannel = At(123.ID, KookMessages.AT_TYPE_CHANNEL) // 或:KookMessages.atChannel(123.ID) val atRole = At(123.ID, KookMessages.AT_TYPE_ROLE) // 或:KookMessages.atRole(123.ID) channel.send(atUser) channel.send(atUser + atChannel + atRole) var channel = ... var atUser = new At(Identifies.ID(123)); var atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL); // 或:KookMessages.atChannel(Identifies.ID(123)); var atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE); // 或:KookMessages.atRole(Identifies.ID(123)); channel.sendBlocking(atUser); channel.sendBlocking(Messages.toMessages(atUser, atChannel, atRole)); var channel = ... var atUser = new At(Identifies.ID(123)); var atChannel = new At(Identifies.ID(123), KookMessages.AT_TYPE_CHANNEL); // 或:KookMessages.atChannel(Identifies.ID(123)); var atRole = new At(Identifies.ID(123), KookMessages.AT_TYPE_ROLE); // 或:KookMessages.atRole(Identifies.ID(123)); channel.sendAsync(atUser); channel.sendAsync(Messages.toMessages(atUser, atChannel, atRole)); AtAll​ 提及。可以通过 AtAll 提及所有。 Kotlin Java Java Async val channel = ... channel.send(AtAll) var channel = ... channel.sendBlocking(AtAll.INSTANCE); var channel = ... channel.sendAsync(AtAll.INSTANCE); Emoji​ emoji。是指 KMarkdown 中所述的 \"emoji\" (:emoji:)。 Kotlin Java Java Async val channel = ... channel.send(Emoji(123.ID)) var channel = ... channel.sendBlocking(new Emoji(Identifies.ID(123))); var channel = ... channel.sendAsync(new Emoji(Identifies.ID(123))); 除了上述一些 simbot 标准消息类型以外,KOOK组件也提供了一些专属的消息类型来满足更全面的消息发送需求。 类型 这些消息类型通常实现了 KookMessageElement 接口,并且以 Kook 作为类名前缀。 KookAssetMessage​ 提供一个 API 中上传得到的 Asset (附件)和它的类型并作为消息发送。 Kotlin Java Java Async val channel = ... // 通过API自行上传一个资源(可以用于避免不必要的多次上传) val asset = CreateAssetApi.create(...).requestBy(...) // 可以选择它是文件,还是图片 val imgMsg = KookAssetImage(asset) val assetMsg = KookAsset(asset, MessageType.FILE) // 如果不是文件,你需要指定消息类型 channel.send(imgMsg) channel.send(assetMsg) var channel = ... // 通过API自行上传一个资源(可以用于避免不必要的多次上传) var asset = CreateAssetApi.create(...).requestByBlocking(...); // 可以选择它是文件,还是图片 var imgMsg = new KookAssetImage(asset); var assetMsg = new KookAsset(asset, MessageType.FILE); // 如果不是文件,你需要指定消息类型 channel.sendBlocking(imgMsg); channel.sendBlocking(assetMsg); var channel = ... // 通过API自行上传一个资源(可以用于避免不必要的多次上传) CreateAssetApi.create(...).requestByAsync(...).thenAccept(asset -> { // 可以选择它是文件,还是图片 var imgMsg = new KookAssetImage(asset); var assetMsg = new KookAsset(asset, MessageType.FILE); // 如果不是文件,你需要指定消息类型 channel.sendAsync(imgMsg); channel.sendAsync(assetMsg); }); KookKMarkdownMessage​ 通过 KookKMarkdownMessage 可以做到直接发送一个完全自定义的 KMarkdown 消息。 Kotlin Java Java Async val channel = ... // 自行构建一个 KMarkdown,并直接作为消息发送。 val kmd = KookKMarkdownMessage(buildKMarkdown { bold(\"这是粗体\") newLine() hide(\"隐藏\") newLine() appendRawMd(\"直接拼接原始字符串,**不做解析**,_不做处理_\") // 其他... }) channel.send(kmd) var channel = ... // 构建KMarkdown var builder = new KMarkdownBuilder(); builder.bold(\"加粗\").newLine(); builder.hide(\"隐藏\").newLine(); builder.appendRawMd(\"原始的文本,**不做处理**,_直接拼接_\"); var kMarkdown = builder.build(); channel.sendBlocking(new KookKMarkdownMessage(kMarkdown)); var channel = ... // 构建KMarkdown var builder = new KMarkdownBuilder(); builder.bold(\"加粗\").newLine(); builder.hide(\"隐藏\").newLine(); builder.appendRawMd(\"原始的文本,**不做处理**,_直接拼接_\"); var kMarkdown = builder.build(); channel.sendAsync(new KookKMarkdownMessage(kMarkdown)); KookCardMessage​ 通过 KookKMarkdownMessage 来发送 KOOK 中的 卡片消息。 Kotlin Java Java Async val channel = ... // 构建card消息 val cardMessage = KookCardMessage(buildCardMessage { card { color = \"...\" theme = Theme.PRIMARY modules { header(\"xxx\") // ... } // ... } }) // 也可以直接通过JSON解析 KookCardMessage(CardMessage.decode(\"{...}\")) // card json value channel.send(cardMessage) var channel = ... // 通过解析卡片消息JSON得到消息对象 var cardMsg = new KookCardMessage(CardMessage.decode(\"{...}\")); channel.sendBlocking(cardMsg); var channel = ... // 通过解析卡片消息JSON得到消息对象 var cardMsg = new KookCardMessage(CardMessage.decode(\"{...}\")); channel.sendAsync(cardMsg); KookAtAllHere​ KOOK 中有一个提及所有在线用户的功能,在KMarkdown中表现为 (met)here(met)。 Kotlin Java Java Async val channel = ... channel.send(KookAtAllHere) var channel = ... channel.sendBlocking(KookAtAllHere.INSTANCE); var channel = ... channel.sendAsync(KookAtAllHere.INSTANCE); KookAttachmentMessage​ 将消息中的多媒体消息 Attachments 作为消息元素发送的消息类型。 差异 与 Asset 不同,Attachments 是出现在消息中的,包括发送后或接收的消息,而 Asset 是你主动上传的资源。 Kotlin Java Java Async val channel = ... val attachments = ... // 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的 val attachmentFile = KookAttachmentFile(attachments) val attachmentImage = KookAttachmentImage(attachments) val attachmentVideo = KookAttachmentVideo(attachments) val attachment = KookAttachment(attachments) channel.send(attachmentFile) channel.send(attachmentImage) channel.send(attachmentVideo) channel.send(attachment) var channel = ... var attachments = ...; // 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的 var attachmentFile = new KookAttachmentFile(attachments); var attachmentImage = new KookAttachmentImage(attachments); var attachmentVideo = new KookAttachmentVideo(attachments); var attachment = new KookAttachment(attachments); channel.sendBlocking(attachmentFile); channel.sendBlocking(attachmentImage); channel.sendBlocking(attachmentVideo); channel.sendBlocking(attachment); var channel = ... var attachments = ...; // 有4种类型可以选择使用,需要选择一个与 attachements 实际情况匹配的 var attachmentFile = new KookAttachmentFile(attachments); var attachmentImage = new KookAttachmentImage(attachments); var attachmentVideo = new KookAttachmentVideo(attachments); var attachment = new KookAttachment(attachments); channel.sendAsync(attachmentFile); channel.sendAsync(attachmentImage); channel.sendAsync(attachmentVideo); channel.sendAsync(attachment);","s":"消息元素","u":"/docs/basic/message","h":"#消息元素","p":11},{"i":24,"t":"TODO","s":"发送消息","u":"/docs/basic/message","h":"#发送消息-1","p":11},{"i":26,"t":"TODO","s":"接收消息","u":"/docs/basic/message","h":"#接收消息-1","p":11},{"i":28,"t":"TODO","s":"角色操作","u":"/docs/basic/role","h":"","p":27},{"i":30,"t":"TODO","s":"未知事件处理","u":"/docs/basic/unknown-event","h":"","p":29},{"i":32,"t":"本章节会提供 bot 的配置文件中各属性的含义以及示例。 场景 bot 的配置文件通常应用于多组件应用或 Spring Boot 项目中。 对于使用Kotlin、不使用SpringBoot的开发者,也可以选择直接使用代码的形式进行配置。","s":"BOT配置文件","u":"/docs/bot-config/","h":"","p":31},{"i":34,"t":"完整示例: xxx.bot.json { \"component\": \"simbot.kook\", \"ticket\": { \"clientId\": \"Your client ID\", \"token\": \"Your ws token\" }, \"config\": { \"isCompress\": true, \"syncPeriods\": { \"guild\": { \"syncPeriod\": 180000, \"batchDelay\": 0 }, \"clientEngineConfig\": { \"threadsCount\": null, \"pipelining\": null }, \"wsEngineConfig\": { \"threadsCount\": null, \"pipelining\": null }, \"timeout\": { \"connectTimeoutMillis\": 5000, \"requestTimeoutMillis\": 5000, \"socketTimeoutMillis\": null }, \"wsConnectTimeout\": null, \"isNormalEventProcessAsync\": null } } } 最简示例: xxx.bot.json { \"component\": \"simbot.kook\", \"ticket\": { \"clientId\": \"Your client ID\", \"token\": \"Your ws token\" } }","s":"示例","u":"/docs/bot-config/","h":"#示例","p":31},{"i":37,"t":"固定值 simbot.kook,必填,代表此配置文件为KOOK组件的。","s":"component","u":"/docs/bot-config/","h":"#component","p":31},{"i":39,"t":"对 bot 身份进行校验、访问 KOOK API 以及连接KOOK服务器进行事件订阅时所需的 bot 票据信息。 在哪儿? 可以在 KOOK开发者平台-应用 中查看。 ticket.clientId​ BOT的 Client ID。 ticket.token​ BOT使用 websocket 模式进行连接的 token .","s":"ticket","u":"/docs/bot-config/","h":"#ticket","p":31},{"i":41,"t":"其他配置,可选。 config.isCompress​ 是否压缩数据。默认为 true。 参考 Gateway API 中的 compress 参数。 config.syncPeriods​ 缓存对象信息的同步周期配置。 { \"config\": { \"syncPeriods\": { \"guild\": { \"syncPeriod\": 180000, \"batchDelay\": 0 } } } } 试着关闭它! 从 v3.2.0.0-alpha.8 重构之后,数据的同步机制比之前的版本而言更加稳定。 如果你有兴趣,可以尝试直接禁用定时同步来观察数据是否会出现差错。 { \"config\": { \"syncPeriods\": { \"guild\": { \"syncPeriod\": 0, \"batchDelay\": 0 } } } } 将 syncPeriod 设置为 0 即可关闭 在预期中,仅通过事件的通知就应满足对内部缓存的同步更新。因此我们希望可以在完全禁用定时同步的情况下依旧可以保证缓存数据的准确性。 但是目前测试或反馈的数据仍然不足,我们无法完全预判禁用定时同步可能造成的后果或如果因此而产生缓存数据不准确的可能原因。 因此我们希望你在可控范围内更多的尝试禁用定时同步并在出现问题时及时反馈, 这可以帮助我们完善内部的缓存机制。 感谢您的支持与贡献! syncPeriods.guild​ 对频道服务器进行同步的周期信息配置,单位毫秒。 syncPeriods.guild.syncPeriod​ 对频道服务器进行同步的周期,单位毫秒,大于0时有效。目前服务器同步的同时会去同步此服务器下的所有频道列表与成员列表。 默认为 180000,即 180000毫秒 -> 180秒 -> 3分钟。 进行配置的时候需要注意考虑调用频率上限等相关问题。 syncPeriods.guild.batchDelay​ 同步数据是分页分批次的同步。batchDelay 配置每批次后进行挂起等待的时间,单位毫秒。 可以通过调大此参数来减缓 API 的请求速率, 默认不等待。 配置此属性可一定程度上降低触发调用频率限制的风险。 默认值的由来? 一拍脑瓜儿随便写的。 config.clientEngineConfig & config.wsEngineConfig​ clientEngineConfig 和 wsEngineConfig 两个配置项类型相同,顾名思义它们分别是针对 API client 和 ws 场景下使用的 HttpClient 实例的引擎(通用)配置项。 它们的配置项都与 Ktor 的 HttpClientEngineConfig 的配置相同,没有额外的含义。 threadsCount​ Specifies network threads count advice. 更多参考 Ktor文档 pipelining​ Enables HTTP pipelining advice. 更多参考 Ktor文档 config.timeout​ BOT内进行API请求时候的超时时间配置。(基于 Ktor HttpTimeout) 信息 当 timeout 本身为null时,不会覆盖原本的默认配置。但如果 timeout 不为null,则会直接使用此对象内信息直接完整覆盖。 例如: { \"config\": { \"timeout\": null } } 此时,connectTimeoutMillis 和 requestTimeoutMillis 都是默认的 5000, 而如果配置是: { \"config\": { \"timeout\": { } } } 则所有属性都会为 null。 connectTimeoutMillis​ a time period required to process an HTTP call: from sending a request to receiving a response. 更多参考 Ktor HttpTimeout requestTimeoutMillis​ a time period in which a client should establish a connection with a server. 更多参考 Ktor HttpTimeout socketTimeoutMillis​ a maximum time of inactivity between two data packets when exchanging data with a server. 更多参考 Ktor HttpTimeout config.wsConnectTimeout​ ws连接超时时间,单位 ms 。默认为 6000 毫秒。 config.isNormalEventProcessAsync​ ProcessorType.NORMAL 类型的事件处理器是否在异步中执行。默认为 true。 当为 false 时, NORMAL 的表现效果将会与 PREPARE 基本类似。 备注 如果你不打算直接操作原始的 Bot 对象来注册一些原始的监听函数, 此配置项对你来说可能就没有太大的作用。","s":"config","u":"/docs/bot-config/","h":"#config","p":31},{"i":43,"t":"此目录中提供一些使用KOOK组件的简单示例。","s":"快速开始","u":"/docs/quick-start/","h":"","p":42},{"i":45,"t":"📄️ 使用API API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。 📄️ 使用标准库 stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。 📄️ 使用simbot核心库 施工中 📄️ 使用SpringBoot 前言","s":"文档列表","u":"/docs/quick-start/","h":"#文档列表","p":42},{"i":47,"t":"API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。","s":"📄️ 使用API","u":"/docs/quick-start/","h":"","p":42},{"i":49,"t":"stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。","s":"📄️ 使用标准库","u":"/docs/quick-start/","h":"","p":42},{"i":51,"t":"施工中","s":"📄️ 使用simbot核心库","u":"/docs/quick-start/","h":"","p":42},{"i":53,"t":"前言","s":"📄️ 使用SpringBoot","u":"/docs/quick-start/","h":"","p":42},{"i":55,"t":"API模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)的解决方案。 API模块是独立的,实质上并不依赖 simbot API。你可以单独使用它作为 KOOK API 的底层封装库。","s":"使用API","u":"/docs/quick-start/api","h":"","p":54},{"i":57,"t":"1. 安装 kook-api 依赖 Gradle Kotlin DSL Gradle Groovy Maven Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { kotlin(\"jvm\") version \"合适且较新的版本\" // 或 multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation(\"love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8\") // 版本参考下文所述的 Releases Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { id 'org.jetbrains.kotlin.jvm' version '合适且较新的版本' // 或 org.jetbrains.kotlin.multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation 'love.forte.simbot.component:simbot-component-kook-api:3.2.0.0-alpha.8' // 版本参考下文所述的 Releases love.forte.simbot.component simbot-component-kook-api-jvm 3.2.0.0-alpha.8 版本参考 版本可前往 Releases 查看并选择。 2. 选择并安装合适的 Ktor Client 依赖 前往 Ktor: HTTP client Engines 选择并使用一个合适的 HTTP Client 引擎。 例如: Kotlin/JVM Kotlin/JS Kotlin/Native Maven 以 CIO 引擎为例: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 或者如果 Java 版本 >= Java11, 使用 Java 引擎: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-java:<合适且较新的Ktor版本>\") 以 JS 引擎为例: implementation(\"io.ktor:ktor-client-js:<合适且较新的Ktor版本>\") WinHttp Darwin Curl see WinHttp implementation(\"io.ktor:ktor-client-winhttp:<合适且较新的Ktor版本>\") see Darwin implementation(\"io.ktor:ktor-client-darwin:<合适且较新的Ktor版本>\") see Curl implementation(\"io.ktor:ktor-client-curl:<合适且较新的Ktor版本>\") 以 CIO 引擎为例: io.ktor ktor-client-cio-jvm 合适且较新的Ktor版本 runtime 或者如果 Java 版本 >= Java11, 使用 Java 引擎: io.ktor ktor-client-java 合适且较新的Ktor版本 runtime ","s":"安装","u":"/docs/quick-start/api","h":"#安装","p":54},{"i":59,"t":"太多了 我们不会在此处一一列举所有的API做演示,这不太现实。 所有的API都在包路径 love.forte.simbot.kook.api 下,你可以通过 API文档 或查阅源码的方式来寻找你所需要的API。 API包装类的命名也存在一定的规律,比如一个 获取xxx列表 的API通常会被命名为 GetXxxListApi。 它们的命名大部分与其对应的实际API地址有很大关系。 下文会选择一小部分API来做示例。","s":"使用","u":"/docs/quick-start/api","h":"#使用","p":54},{"i":61,"t":"以 获取当前用户(BOT)加入的服务器列表 为例。 Kotlin/JVM Kotlin/JS Kotlin/Native Java Java Async // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(CIO) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GetGuildListApi.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData: ListData = api.requestData(client, authorization) guildListData.items.forEach { println(\"guild: $it\") } // 也可以直接 guildListData.forEach { ... } // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(Js) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GetGuildListApi.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData: ListData = api.requestData(client, authorization) guildListData.items.forEach { println(\"guild: $it\") } // 也可以直接 guildListData.forEach { ... } 此处以 MingwX64 平台环境为例: // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html val client = HttpClient(WinHttp) { // config... } // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference val authorization = \"Bot xxxxxxxxxx\" // 构建要请求的API,大部分API都有一些可选或必须的参数。 val api = GetGuildListApi.create() // request data 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) val guildListData: ListData = api.requestData(client, authorization) guildListData.items.forEach { println(\"guild: $it\") } // 也可以直接 guildListData.forEach { ... } // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建要请求的API,大部分API都有一些可选或必须的参数。 var api = GetGuildListApi.create(); // requestDataBlocking 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) var guildListData = api.requestDataBlocking(client, authorization); for (var guild : guildListData) { System.out.println(guild); } // 在Java中构建或获取一个 Ktor 的 HttpClient。 // 用于请求的 Ktor HttpClient,如有必要则需要自行引入并选择需要使用的引擎。 // 参考:https://ktor.io/docs/http-client-engines.html // 此处以 ktor-cio 引擎为例。 var client = HttpClientKt.HttpClient(CIO.INSTANCE, config -> { // config... return Unit.INSTANCE; }); // 鉴权信息 // 'Bot' 后面跟的是bot的token,参考 https://developer.kookapp.cn/doc/reference var authorization = \"Bot xxxxxxxxxx\"; // 构建要请求的API,大部分API都有一些可选或必须的参数。 var api = GetGuildListApi.create(); // requestDataAsync 会检测result,然后将真正的data结果返回 (或在验证失败的情况下抛出异常) CompletableFuture> guildListDataFuture = api.requestDataAsync(client, authorization); // Use the future, or handle exception guildListDataFuture.thenAccept(listData -> { for (var guild : listData) { System.out.println(guild); } }).exceptionally(err -> { logger.error(\"err!\", err); return null; });","s":"获取用户频道服务器列表","u":"/docs/quick-start/api","h":"#获取用户频道服务器列表","p":54},{"i":64,"t":"本编文档介绍使用: simboot-core-spring-boot-starter: simbot3 的 Spring Boot Starter simbot-component-kook-core: simbot3 的 KOOK 组件 来编写搭建一个基于simbot和Spring的KOOK机器人项目。","s":"前言","u":"/docs/quick-start/spring-boot","h":"#前言","p":62},{"i":66,"t":"首先你应当准备至少一个可用的 KOOK机器人 。","s":"前提准备","u":"/docs/quick-start/spring-boot","h":"#前提准备","p":62},{"i":68,"t":"1. 准备 Spring Boot 项目 首先准备一个SpringBoot项目。可以考虑前往 start.spring.io 或借助IDE等工具。 2. 添加 simbot 依赖 然后额外添加两个我们需要的依赖: love.forte.simbot.boot:simboot-core-spring-boot-starter (版本参考) love.forte.simbot.component:simbot-component-kook-core (版本参考) 保持住 注意,在使用 Spring Boot 的时候你需要一些能够使程序保持运行的组件,例如通过 spring-web 启用一个服务器,否则程序可能会自动终止。 因为simbot的 starter 并不提供维持程序运行的能力。 当然,你也可以选择使用一个线程来自行实现程序保活。 Gradle Kotlin DSL Gradle Groovy Maven // simbot core starter implementation(\"love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION\") // 版本请参考前文的参考链接 // KOOK组件 implementation(\"love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8\") // 版本可参考前文的参考链接 // simbot core starter implementation 'love.forte.simbot.boot:simboot-core-spring-boot-starter:$SIMBOT_VERSION' // 版本请参考前文的参考链接 // KOOK组件 implementation 'love.forte.simbot.component:simbot-component-kook-core:3.2.0.0-alpha.8' // 版本可参考前文的参考链接 love.forte.simbot.boot simboot-core-spring-boot-starter ${SIMBOT_VERSION} love.forte.simbot.component simbot-component-kook-core 3.2.0.0-alpha.8 3. 选择并安装合适的 Ktor Client 依赖 前往 Ktor: HTTP client Engines 选择并使用一个合适的、支持 websocket 连接 的 HTTP Client 引擎。 限制条件 注意: 你需要选择一个支持HTTP 1.1和WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。 各引擎实现的限制可参考 Ktor文档。 例如: Gradle Kotlin DSL Gradle Groovy Maven 以 CIO 引擎为例: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 如果没有使用 Gradle 的 Kotlin 插件,则主动分配平台后缀: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio-jvm:<合适且较新的Ktor版本>\") 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-java:<合适且较新的Ktor版本>\") 以 CIO 引擎为例: // 或使用 runtimeOnly implementation 'io.ktor:ktor-client-cio:<合适且较新的Ktor版本>' 如果没有使用 Gradle 的 Kotlin 插件,则主动分配平台后缀: // 或使用 runtimeOnly implementation 'io.ktor:ktor-client-cio-jvm:<合适且较新的Ktor版本>' 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: // 或使用 runtimeOnly implementation 'io.ktor:ktor-client-java:<合适且较新的Ktor版本>' 以 CIO 引擎为例: io.ktor ktor-client-cio-jvm 合适且较新的Ktor版本 runtime 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: io.ktor ktor-client-java 合适且较新的Ktor版本 runtime ","s":"项目构建","u":"/docs/quick-start/spring-boot","h":"#项目构建","p":62},{"i":70,"t":"接下来,在项目资源文件目录下的 simbot-bots 文件夹中创建一个用于配置bot的配置文件 xxx.bot.json ( 文件名随意,扩展名应为 .bot 或 .bot.json ) 。 配置文件的具体内容则参考章节 BOT配置文件 。 此路径以 IDEA 的项目结构风格为准,如果是其他IDE,使用对应的资源文件目录。 ${PROJECT_SRC}/main/resources/simbot-bots/xxx.bot.json 可配置 如果想要修改此路径,可在 Spring Boot 的配置文件中进行配置: properties YAML # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 simbot.bot-configuration-resources[0]=classpath:simbot-bots/*.bot* simbot: # 自定义配置bot资源文件的扫描路径。 # 默认为 classpath:simbot-bots/*.bot* # 如果要使用本地文件可以使用 `file:` 开头 bot-configuration-resources: - 'classpath:simbot-bots/*.bot*'","s":"BOT配置","u":"/docs/quick-start/spring-boot","h":"#bot配置","p":62},{"i":72,"t":"像每一个 Spring Boot 应用一样,你需要一个启动类,并通过标注 @EnableSimbot 来启用 simbot : Kotlin Java com.example.App.kt @EnableSimbot @SpringBootApplication class App fun main(vararg args: String) { runApplication(args = args) } 早有预防 如果你在Java中遇到了无法引用 @EnableSimbot 等情况,或许可以参考 这篇FAQ。 com.example.App.java @EnableSimbot @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }","s":"启动类","u":"/docs/quick-start/spring-boot","h":"#启动类","p":62},{"i":74,"t":"接下来就是逻辑代码所在的地方了,编写一个监听函数并监听一个事件。 此处我们监听 ChannelMessageEvent,也就是 子频道的消息事件。 假设:要求bot必须被AT,并且说一句 你好,此时bot会引用用户发送的消息并回复 你也好! ,类似于: 用户: @BOT 你好 BOT: > 用户: @BOT 你好 你也好! Kotlin Java Blocking Java Async Java Reactive com.example.listener.ExampleListener.kt import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component class ExampleListener { @Listener @Filter(value = \"你好\", targets = Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 suspend fun onChannelMessage(event: ChannelMessageEvent) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 event.reply(\"你也好!\") } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public void onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // Java中的阻塞式API event.replyBlocking(\"你也好!\"); } } com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public CompletableFuture onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 CompletableFuture 作为返回值,simbot会以非阻塞的形式处理它 return event.replyAsync(\"你也好!\"); } } 有要求 如果返回值是需要第三方库的响应式类型,那么你的项目环境依赖中必须存在 Kotlin courotines 对其的支持库才可使用。 你可以参考simbot文档: 响应式的处理结果 。 com.example.listener.ExampleListener.java import love.forte.simboot.annotation.ContentTrim import love.forte.simboot.annotation.Filter import love.forte.simboot.annotation.Listener import love.forte.simbot.event.ChannelMessageEvent @Component public class ExampleListener { @Listener @Filter(value = \"你好\", targets = @Filter.Targets(atBot = true)) @ContentTrim // 当匹配被at时,将'at'这个特殊消息移除后,剩余的文本消息大概率存在前后空格,通过此注解在匹配的时候忽略前后空格 public Mono onChannelMessage(ChannelMessageEvent event) { // 将要监听的事件类型放在参数里,即代表监听此类型的消息 // 将 Mono 等响应式类型作为返回值,simbot会以非阻塞的形式处理它 return Mono.fromCompletionStage(event.replyAsync(\"你也好!\")); } }","s":"监听事件","u":"/docs/quick-start/spring-boot","h":"#监听事件","p":62},{"i":76,"t":"接下来,启动程序并在你的沙箱频道中@它试试看吧。 当然,如果遇到了预期外的问题也不要慌,积极反馈问题才能使我们变得更好,可以前往 Issues 反馈问题、社区 提出疑问。","s":"启动","u":"/docs/quick-start/spring-boot","h":"#启动","p":62},{"i":78,"t":"前往 simbot3官网 来了解simbot3的各通用能力。 前往 API文档 或通过源码翻阅、搜索并了解具体的功能。 前往 社区 提出疑惑。 最终,本手册网站可能会时不时的更新一些实用性的应用文档。 精力有限 编写使用手册是极其消耗精力的事情。 我们会首先保证源码的文档注释的全面性,同时由此保证API文档的说明始终是紧随源码生成而完整的。(API文档会随着版本的发布自动部署) 其次,我们会尽可能的及时并全面的回复社区中的相关疑惑。 最终,我们才会考虑完善本手册网站。","s":"更多","u":"/docs/quick-start/spring-boot","h":"#更多","p":62},{"i":80,"t":"TODO 施工中 你可以先参考 使用SpringBoot,它相当于在 Spring Boot 环境下使用simbot核心库。 其他参考 你也可以参考simbot3官网中的 《使用核心库》","s":"使用simbot核心库","u":"/docs/quick-start/simbot-core","h":"","p":79},{"i":82,"t":"stdlib标准库模块基于 KMP 构建项目,支持 JVM、JS、Native 平台,使用 Ktor 作为API请求(http请求)和事件订阅(WS连接)的解决方案。 标准库模块是独立的,实质上并不依赖 simbot API。你可以单独使用它作为 KOOK API 与事件订阅能力的底层封装库。 标准库模块依赖API模块。","s":"使用标准库","u":"/docs/quick-start/stdlib","h":"","p":81},{"i":84,"t":"1. 安装 kook-stdlib 依赖 Gradle Kotlin DSL Gradle Groovy Maven Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { kotlin(\"jvm\") version \"合适且较新的版本\" // 或 multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation(\"love.forte.simbot.component:simbot-component-kook-stdlib:3.2.0.0-alpha.8\") // 版本参考下文所述的 Releases Gradle 的 Kotlin 插件: // 使用 Gradle 的 kotlin 插件来允许自动选择依赖的对应平台,比如JVM或JS等。 plugin { id 'org.jetbrains.kotlin.jvm' version '合适且较新的版本' // 或 org.jetbrains.kotlin.multiplatform, 如果你使用多平台的话 // 如果你使用 Java,也最好添加此插件,因此它可以帮助你自动选择 -jvm 的依赖,而不需要主动添加此后缀 } 依赖: implementation 'love.forte.simbot.component:simbot-component-kook-stdlib:3.2.0.0-alpha.8' // 版本参考下文所述的 Releases love.forte.simbot.component simbot-component-kook-stdlib-jvm 3.2.0.0-alpha.8 2. 选择并安装合适的 Ktor Client 依赖 前往 Ktor: HTTP client Engines 选择并使用一个合适的 HTTP Client 引擎。 限制条件 注意: 你需要选择一个支持HTTP 1.1和WS Client的引擎。部分引擎可能不支持WS Client,请注意区分。 各引擎实现的限制可参考 Ktor文档。 例如: Kotlin/JVM Kotlin/JS Kotlin/Native Maven 以 CIO 引擎为例: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: // 或使用 runtimeOnly implementation(\"io.ktor:ktor-client-java:<合适且较新的Ktor版本>\") 以 JS 引擎为例: implementation(\"io.ktor:ktor-client-js:<合适且较新的Ktor版本>\") WinHttp Darwin CIO see WinHttp implementation(\"io.ktor:ktor-client-winhttp:<合适且较新的Ktor版本>\") see Darwin implementation(\"io.ktor:ktor-client-darwin:<合适且较新的Ktor版本>\") see CIO implementation(\"io.ktor:ktor-client-cio:<合适且较新的Ktor版本>\") 以 CIO 引擎为例: io.ktor ktor-client-cio-jvm 合适且较新的Ktor版本 runtime 或者如果 Java 版本 >= Java11, 可以使用 Java 引擎: io.ktor ktor-client-java 合适且较新的Ktor版本 runtime ","s":"安装","u":"/docs/quick-start/stdlib","h":"#安装","p":81},{"i":87,"t":"Kotlin/JVM Kotlin/JS Kotlin/Native Java Java Async // 构建一个 bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎 clientEngineFactory = CIO wsEngineFactory = CIO // 是否启用 compress, 默认为true isCompress = true // 禁用API请求时的超时配置 disableTimeout() // 或者自定义超时配置 timeout { requestTimeoutMillis = 5000L connectTimeoutMillis = 5000L } // 以及其他... } // 注册事件处理器 bot.processor { raw -> // this: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"raw: $raw\") } // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.processor(Event.Type.KMARKDOWN) { raw -> // this: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"type: $type\") println(\"raw: $raw\") } // 可以查询bot自身的信息 val me = bot.me() println(\"me: $me\") // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 一个简化版的示例: // 构建bot // 需要确保runtime环境中有可用的ktor引擎,且同时支持HTTP和ws client val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) // 订阅某个具体事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() // 构建一个 bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JS平台下,默认会依赖ktor-js(因为js平台似乎没别的可选),因此此处可以省略 clientEngineFactory = Js wsEngineFactory = Js // 是否启用 compress // JS 平台下默认为 **false** // JS 平台支持开启 compress, 但是可能不够稳定,因此如果非必要,可以不用开启。 isCompress = false // 禁用API请求时的超时配置 disableTimeout() // 或者自定义超时配置 timeout { requestTimeoutMillis = 5000L connectTimeoutMillis = 5000L } // 以及其他... } // 注册事件处理器 bot.processor { raw -> // this: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"raw: $raw\") } // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.processor(Event.Type.KMARKDOWN) { raw -> // this: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"type: $type\") println(\"raw: $raw\") } // 可以查询bot自身的信息 val me = bot.me() println(\"me: $me\") // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 一个简化版的示例: // 构建bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) // 订阅某个具体事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 此处以 MingwX64 平台环境为例: // 构建一个 bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // 不同的native平台请注意选择合适的引擎 clientEngineFactory = WinHttp wsEngineFactory = WinHttp // 是否启用 compress // native 平台下默认为 **false**, 且 **不支持** 开启。 // isCompress = false // 禁用API请求时的超时配置 disableTimeout() // 或者自定义超时配置 timeout { requestTimeoutMillis = 5000L connectTimeoutMillis = 5000L } // 以及其他... } // 注册事件处理器 bot.processor { raw -> // this: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"raw: $raw\") } // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.processor(Event.Type.KMARKDOWN) { raw -> // this: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"type: $type\") println(\"raw: $raw\") } // 可以查询bot自身的信息 val me = bot.me() println(\"me: $me\") // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() 一个简化版的示例: // 构建bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // 配置bot进行client请求和ws连接时使用的Ktor引擎 // 不同的native平台请注意选择合适的引擎 clientEngineFactory = WinHttp wsEngineFactory = WinHttp } // 订阅某个具体事件 bot.processor { raw -> // this: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 println(\"event: $this\") println(\"extra: $extra\") println(\"raw: $raw\") } // 启动BOT。调用 start 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.join() 会挂起,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 // startAndJoin() 组合了 start() 和 join() bot.startAndJoin() // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 准备bot配置 final var botConfiguration = new BotConfiguration(); // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎 botConfiguration.setClientEngineFactory(CIO.INSTANCE); botConfiguration.setWsEngineFactory(CIO.INSTANCE); // 是否启用 compress, 默认为true botConfiguration.setCompress(true); // 禁用API请求时的超时配置 botConfiguration.disableTimeout(); // 或者自定义超时配置 final var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration(); timeoutConfiguration.setRequestTimeoutMillis(5000L); timeoutConfiguration.setConnectTimeoutMillis(5000L); botConfiguration.setTimeout(timeoutConfiguration); // 以及其他... // 构建bot final var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration 也可省略,如果都用默认的话 // 注册事件处理器 bot.blockingProcessor((event, raw) -> { // event: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"raw = \" + raw); }); // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.blockingProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); }); // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.blockingProcessor(Event.Type.KMARKDOWN, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getType() = \" + event.getType()); System.out.println(\"raw = \" + raw); }); // 可以查询bot自身的信息 final var me = bot.getMe(); System.out.println(\"me = \" + me); // 启动BOT。调用 startBlocking 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // startAndJoin() 组合了 start() 和 join() bot.startBlocking(); // bot.joinBlocking() 会阻塞当前线程,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.joinBlocking(); 一个简化版的示例: // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 构建bot final var bot = BotFactory.create(ticket);// botConfiguration 也可省略,如果都用默认的话 // 订阅某个具体事件 bot.blockingProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); }); // 启动BOT。调用 startBlocking 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 bot.startBlocking(); // bot.joinBlocking() 会阻塞当前线程,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.joinBlocking(); // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 准备bot配置 final var botConfiguration = new BotConfiguration(); // bot相关的配置, 例如: // 配置bot进行client请求和ws连接时使用的Ktor引擎 // JVM平台下,默认不配置则会尝试自动加载环境中可能存在的引擎 botConfiguration.setClientEngineFactory(CIO.INSTANCE); botConfiguration.setWsEngineFactory(CIO.INSTANCE); // 是否启用 compress, 默认为true botConfiguration.setCompress(true); // 禁用API请求时的超时配置 botConfiguration.disableTimeout(); // 或者自定义超时配置 final var timeoutConfiguration = new BotConfiguration.TimeoutConfiguration(); timeoutConfiguration.setRequestTimeoutMillis(5000L); timeoutConfiguration.setConnectTimeoutMillis(5000L); botConfiguration.setTimeout(timeoutConfiguration); // 以及其他... // 构建bot final var bot = BotFactory.create(ticket, botConfiguration);// botConfiguration 也可省略,如果都用默认的话 // 注册事件处理器 bot.asyncProcessor((event, raw) -> { // event: Event<*>, 也就是本次接收到的事件体。 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"raw = \" + raw); // ⚠ 不要在任何异步函数体中调用阻塞API。 // 例如:bot.getMe(), xxxBlocking等。 // 任何有 xxxAsync 等价替代的函数都是阻塞函数。 // 假设有个异步任务,返回一个异步结果 return CompletableFuture.completedFuture(null); }); // 也可以根据事件的 extra 订阅一个具体类型的事件 bot.asyncProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); // 假设有个异步任务,返回一个异步结果 return CompletableFuture.completedFuture(null); }); // 也可以根据事件类型 Event.Type 的某个值订阅与之匹配的事件 bot.asyncProcessor(Event.Type.KMARKDOWN, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。this.event 与 Type 参数匹配 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getType() = \" + event.getType()); System.out.println(\"raw = \" + raw); // 假设有个异步任务,返回一个异步结果 return CompletableFuture.completedFuture(null); }); // 可以查询bot自身的信息 // 如果有需要,记得处理异常 bot.getMeAsync().thenAccept(me -> { // 得到结果 System.out.println(\"me = \" + me); }); // 启动BOT。调用 startAsync 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // 如果有需要,记得处理异常 bot.startAsync(); // bot.asFuture() 会转化为一个活跃的 CompletableFuture,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.asFuture().whenComplete((unit, throwable) -> { System.out.println(\"Bot被终止了。\"); System.out.println(\"throwable: \" + throwable); }); 一个简化版的示例: // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 构建bot final var bot = BotFactory.create(ticket); // 订阅某个具体事件 bot.asyncProcessor(TextExtra.class, (event, raw) -> { // event: Event, 也就是本次接收到的事件体。只有 extra 的类型匹配才会触发此事件处理器 // raw: ws连接接收到的原始事件的JSON字符串 System.out.println(\"event = \" + event); System.out.println(\"event.getExtra() = \" + event.getExtra()); System.out.println(\"raw = \" + raw); // 假设有个异步任务,返回一个异步结果 // ⚠ 不要在任何异步函数体中调用阻塞API。 // 例如:bot.getMe(), xxxBlocking等。 // 任何有 xxxAsync 等价替代的函数都是阻塞函数。 return CompletableFuture.completedFuture(null); }); // 启动BOT。调用 startAsync 或其他衍生函数 bot 才会开始连接到 KOOK 服务器并订阅消息。 // bot.asFuture() 会转化为一个活跃的 CompletableFuture,直到 bot 被关闭,例如在某处调用 bot.close() 或 bot中的父Job被关闭 bot.startAsync().thenCompose(unit -> bot.asFuture()).whenComplete((unit, throwable) -> { System.out.println(\"Bot被终止了。\"); System.out.println(\"throwable: \" + throwable); });","s":"构建BOT、订阅事件","u":"/docs/quick-start/stdlib","h":"#构建bot订阅事件","p":81},{"i":89,"t":"在标准库中,我们也针对 Bot 提供了一些用于请求API的便捷方法,免除你每次都需要提供 HttpClient 和 authorization 的问题。 以获取频道服务器列表API为例: Kotlin Java Java Async 省略配置过程,Kotlin各平台的使用方式是一致的。 // 构建bot val bot = BotFactory.create(Ticket.botWsTicket(clientId = \"CLIENT_ID\", token = \"TOKEN\")) { // 配置过程省略 } // 获取频道列表API val api = GetGuildListApi.create() // 通过 bot 请求 val dataList = api.requestBy(bot) dataList.forEach { println(\"guild: $it\") } // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot final var bot = BotFactory.create(ticket); // 构建api final var api = GetGuildListApi.create(); // 请求并得到结果 final var listData = api.requestByBlocking(bot); for (SimpleGuild guild : listData) { System.out.println(\"guild = \" + guild); } // 准备Ticket final var ticket = Ticket.botWsTicket(\"CLIENT_ID\", \"TOKEN\"); // 配置过程省略... // 构建bot final var bot = BotFactory.create(ticket); // 构建api final var api = GetGuildListApi.create(); // 请求并得到结果 api.requestByAsync(bot).thenAccept(listData -> { for (SimpleGuild guild : listData) { System.out.println(\"guild = \" + guild); } });","s":"使用BOT请求API","u":"/docs/quick-start/stdlib","h":"#使用bot请求api","p":81}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,4.633,1,4.633,2,0.125,3,3.852,4,5.708,5,3.231,6,2.738,7,2.102,8,2.457,9,2.255,10,1.116,11,2.59,12,2.426,13,4.633,14,3.127,15,3.471,16,1.84,17,3.471,18,1.431,19,1.657,20,3.933,21,1.726,22,2.851,23,2.426,24,4.633,25,5.708,26,3.471,27,4.633,28,1.965,29,3.933,30,2.255,31,3.471,32,3.471,33,0.695]],["t/4",[2,0.119,5,2.995,6,2.244,9,2.575,10,1.489,16,2.681,17,3.965,28,2.244,34,5.292,35,1.739,36,5.292,37,5.292,38,3.571,39,3.257]],["t/6",[2,0.123,5,2.711,8,1.902,10,1.154,16,2.493,18,1.479,19,1.691,21,2.17,33,0.719,35,1.573,38,3.931,40,3.588,41,1.573,42,0.773,43,1.784,44,2.17,45,2.508,46,4.065,47,2.948,48,4.789,49,2.313,50,2.508,51,2.948,52,3.585,53,4.789,54,4.789,55,4.065,56,2.948,57,4.065,58,2.508,59,2.711,60,4.065,61,4.065,62,2.031]],["t/8",[2,0.123,8,1.611,10,1.6,11,1.84,12,2.124,16,2.674,18,1.253,19,1.177,21,1.511,28,2.609,33,0.609,35,1.333,38,3.542,39,2.496,40,3.039,41,1.333,42,0.847,43,1.955,44,1.955,45,2.124,49,2.311,50,2.124,51,2.496,52,2.496,55,3.443,56,3.23,57,4.455,58,2.124,59,2.296,60,3.443,61,3.443,62,2.768,63,2.831,64,4.056,65,3.039,66,4.056,67,3.293,68,4.056,69,1.177,70,1.72,71,2.124,72,1.72,73,4.056,74,3.932,75,3.443,76,3.443,77,4.056,78,3.039,79,3.23,80,2.296,81,2.496,82,2.296,83,2.737,84,2.737,85,3.443,86,4.056,87,4.056,88,2.737,89,0.86,90,3.039]],["t/10",[2,0.124,5,2.204,6,2.167,8,1.547,9,3.141,10,1.555,11,2.748,12,3.172,16,2.564,18,1.203,19,1.131,20,3.306,21,2.343,22,2.397,26,2.918,35,1.679,38,2.628,40,3.829,41,1.679,42,0.629,43,1.451,47,2.397,49,1.547,50,2.676,51,3.146,52,2.397,56,2.397,58,2.039,62,1.651,63,1.895,67,2.893,70,1.651,71,2.039,72,1.651,76,3.306,79,2.397,89,0.825,91,3.306,92,3.894,93,2.893,94,3.894,95,3.894,96,3.894,97,5.111,98,1.904,99,3.306,100,3.894,101,3.894,102,2.918,103,3.306,104,3.306,105,3.894,106,3.306,107,3.829,108,3.894,109,3.894,110,3.306,111,3.894,112,3.894,113,2.918,114,1.767,115,3.306,116,2.918,117,3.894,118,3.306,119,3.894,120,3.894,121,3.894,122,3.894]],["t/12",[2,0.108,6,2.275,21,1.998,33,0.805,43,1.998,67,3.036,69,1.557,70,2.275,71,2.809,123,4.554,124,5.365,125,3.302,126,3.036,127,5.365,128,2.275,129,5.365,130,5.365]],["t/14",[2,0.113,10,1.262,11,2.377,12,2.743,16,2.441,21,1.951,28,2.222,33,0.979,47,3.224,70,2.222,79,3.224,126,2.965,128,2.222,131,6.146,132,3.224,133,2.965,134,6.146,135,3.925]],["t/16",[2,0.128,7,0.833,10,0.442,18,1.83,21,0.684,22,1.13,28,0.779,30,1.433,33,0.693,39,1.13,42,0.746,43,0.684,44,2.068,69,1.07,70,2.589,71,2.209,72,0.779,80,1.039,81,1.13,89,0.781,114,0.833,123,2.499,136,1.558,137,1.376,138,1.097,139,1.836,140,1.836,141,1.039,142,1.836,143,1.836,144,1.812,145,1.836,146,2.596,147,1.836,148,1.836,149,1.558,150,2.945,151,1.836,152,1.931,153,1.558,154,1.039,155,2.269,156,3.129,157,1.811,158,2.488,159,3.129,160,1.673,161,2.418,162,2.09,163,3.129,164,3.129,165,3.129,166,1.376,167,1.376,168,1.239,169,1.376,170,5.552,171,4.713,172,1.931,173,1.376,174,3.326,175,3.494,176,1.987,177,1.812,178,2.945,179,2.206,180,1.836,181,1.836,182,1.239,183,2.087,184,1.563,185,2.206,186,1.987]],["t/18",[2,0.128,9,1.641,10,0.812,18,1.433,33,0.506,42,0.545,49,2.107,63,2.258,69,0.979,70,2.541,89,0.984,125,2.856,126,1.909,128,1.431,138,1.256,157,1.18,171,3.939,172,1.766,183,2.627,184,2.25,185,3.477,186,3.132,187,2.076,188,2.076,189,2.527,190,2.276,191,4.641,192,2.276,193,3.373,194,3.373,195,3.373,196,2.527,197,2.863]],["t/20",[2,0.109,9,2.665,10,1.319,11,2.485,30,2.665,33,0.822,56,3.371,70,2.323,71,2.868,125,3.371,198,5.477]],["t/22",[2,0.128,6,1.183,9,0.603,10,0.512,11,0.563,12,0.649,15,0.929,18,1.021,21,1.039,22,0.763,23,0.649,28,1.183,33,0.651,41,0.698,42,0.45,43,1.385,50,2.812,58,1.461,59,0.702,69,1.559,70,2.749,71,2.397,80,2.296,84,0.837,89,1.161,90,0.929,91,1.053,98,0.462,102,0.929,106,1.053,114,1.266,125,0.763,126,1.579,138,1.847,141,0.702,155,1.717,157,1.419,158,2.231,160,2.169,172,0.649,174,1.883,188,0.763,192,1.883,197,2.806,199,1.24,200,2.126,201,3.306,202,0.702,203,2.126,204,1.24,205,4.208,206,1.24,207,1.24,208,1.053,209,3.719,210,1.24,211,3.719,212,1.593,213,0.649,214,1.24,215,1.593,216,1.24,217,0.929,218,1.24,219,1.24,220,1.053,221,1.053,222,1.24,223,1.24,224,0.929,225,1.24,226,1.053,227,0.929,228,1.24,229,1.24,230,4.577,231,1.24,232,2.806,233,2.79,234,2.79,235,2.79,236,3.443,237,2.79,238,1.183,239,2.79,240,1.883,241,1.24,242,0.929,243,1.24,244,2.79,245,2.79,246,1.053,247,2.806,248,2.126,249,2.79,250,1.804,251,1.24,252,1.053,253,1.24,254,1.24,255,1.053,256,1.24,257,0.837,258,2.79,259,2.368,260,2.09]],["t/24",[2,0.099]],["t/26",[2,0.099]],["t/28",[2,0.099]],["t/30",[2,0.099]],["t/32",[2,0.119,6,2.136,21,1.876,23,2.637,26,3.773,33,0.901,35,1.655,42,1.036,80,2.851,89,1.067,98,1.876,107,3.773,116,3.773,154,2.851,160,2.285,184,2.136,196,3.773,202,2.851,224,3.773,261,4.275,262,4.275,263,4.499,264,4.275,265,3.773,266,4.052,267,4.275,268,4.275]],["t/34",[2,0.127,154,3.231,269,3.471,270,4.633]],["t/37",[2,0.116,6,2.356,263,4.162,271,5.555,272,5.555,273,4.715]],["t/39",[2,0.125,11,2.256,19,1.443,33,0.746,42,0.803,49,1.975,63,2.419,89,1.054,107,3.725,146,3.06,202,3.373,265,3.725,266,3.355,274,4.972,275,4.972,276,4.972,277,3.12,278,4.22,279,3.355,280,4.972,281,4.972,282,4.972,283,4.22,284,4.972]],["t/41",[2,0.127,7,1.455,8,0.812,11,2.033,17,1.532,22,3.179,23,2.705,30,1.926,33,0.594,39,1.974,41,0.672,42,0.518,44,1.195,46,1.736,47,1.259,49,1.274,50,1.68,58,1.071,59,1.815,65,1.532,72,0.867,79,1.259,80,2.536,81,1.259,82,2.24,85,1.736,89,1.032,90,2.403,93,1.157,98,1.813,110,1.736,114,0.928,116,1.532,118,1.736,128,1.9,133,2.24,138,1.195,141,2.24,144,1.259,146,2.758,149,2.723,157,0.715,161,1.071,162,2.19,168,1.38,172,1.071,184,2.653,189,1.532,192,2.165,196,2.403,202,2.24,213,2.828,215,2.403,220,1.736,238,2.064,250,3.359,252,1.736,255,2.723,264,1.736,269,1.532,277,1.071,278,2.723,279,3.024,285,3.359,286,2.045,287,4.868,288,3.957,289,6.18,290,3.957,291,2.045,292,2.723,293,2.045,294,2.045,295,3.207,296,2.045,297,1.259,298,2.045,299,1.736,300,2.045,301,1.974,302,3.804,303,4.481,304,2.045,305,2.045,306,2.045,307,2.045,308,1.736,309,2.045,310,2.045,311,3.207,312,1.736,313,3.207,314,1.736,315,3.207,316,2.045,317,1.736,318,3.207,319,2.045,320,2.723,321,2.045,322,2.045,323,1.736,324,2.045,325,2.045,326,2.045,327,2.045,328,2.045,329,2.045,330,2.045,331,2.045,332,2.045,333,3.957,334,2.403,335,1.736,336,1.532,337,1.736,338,2.045,339,2.045,340,4.481,341,4.868,342,2.045,343,2.045,344,1.974,345,1.532,346,2.165,347,2.045,348,2.045,349,2.045,350,2.403,351,1.38,352,1.532,353,2.723,354,3.207,355,2.045,356,2.045,357,2.045,358,3.207,359,1.736,360,3.207,361,3.957,362,2.045,363,2.723,364,2.045,365,2.045,366,2.045,367,1.736,368,2.045,369,2.045,370,1.736,371,1.532,372,2.045,373,2.045,374,2.045,375,2.045,376,2.045,377,2.045,378,4.481,379,3.207,380,2.045,381,2.045,382,1.736,383,2.723,384,2.723,385,2.045,386,1.736,387,3.207,388,2.045,389,1.736,390,1.736,391,1.736,392,2.045,393,2.045,394,2.045,395,1.736,396,2.045,397,2.045,398,2.045,399,1.736,400,1.532,401,2.045,402,1.736]],["t/43",[2,0.096,6,2.347,21,2.062,33,0.831,42,0.894,114,2.511,153,4.699,154,3.133,403,5.536]],["t/45",[2,0.125,8,2.292,9,2.295,10,1.502,16,2.292,18,1.782,19,1.675,28,2.448,33,0.708,35,1.896,41,1.896,42,1.095,43,2.15,44,2.42,45,3.022,49,1.873,63,2.295,277,2.47,404,3.534,405,4.004]],["t/47",[2,0.123,8,2.123,16,2.123,18,1.651,19,1.552,35,1.756,41,1.756,42,0.863,43,1.991,44,2.316,45,2.8]],["t/49",[2,0.123,8,2.081,10,1.262,16,2.081,18,1.618,19,1.521,28,2.222,35,1.721,41,1.721,42,0.846,43,1.951,44,2.289,45,2.743,49,2.081,63,2.549,277,2.743]],["t/51",[33,0.852,404,4.253]],["t/53",[405,4.836]],["t/55",[2,0.124,8,2.013,10,1.221,16,2.394,18,1.565,19,1.471,35,1.665,41,1.665,42,0.973,43,2.245,44,2.245,45,2.654,51,3.12,52,3.12,62,2.15,74,3.798,78,3.798,89,1.074,406,4.303]],["t/57",[2,0.127,3,2.821,10,0.537,19,1.618,23,1.796,33,0.334,42,1.038,62,2.555,69,1.213,72,1.454,88,3.611,89,0.995,93,1.261,98,1.277,132,2.11,133,2.656,138,1.277,152,2.189,157,1.199,160,2.61,161,3.156,162,1.99,182,2.314,184,1.99,187,2.11,213,1.796,217,3.131,238,2.555,240,2.314,257,2.314,283,1.892,297,4.022,301,2.11,336,2.569,407,2.569,408,2.911,409,2.888,410,2.569,411,4.199,412,4.515,413,4.515,414,2.569,415,2.911,416,3.516,417,3.131,418,2.11,419,2.314,420,2.314,421,2.314,422,3.516,423,2.314]],["t/59",[2,0.124,3,3.108,7,2.09,23,2.412,30,2.241,39,2.835,69,1.337,75,3.909,83,3.108,89,0.976,98,2.118,128,1.953,132,2.835,136,3.909,137,3.451,138,1.716,154,2.607,157,1.611,160,2.09,167,3.451,173,3.451,176,3.108,177,2.835,215,4.261,224,3.451,227,3.451,247,4.828,259,3.909,346,3.108,367,3.909,386,3.909,402,4.828,410,3.451,424,4.606,425,4.606,426,4.606,427,4.606,428,3.909,429,4.606,430,4.606,431,6.171,432,4.606,433,4.606,434,4.606,435,4.606,436,4.606]],["t/61",[2,0.128,18,1.635,19,0.563,30,2.31,33,0.462,42,0.766,44,2.158,58,2.486,59,2.687,69,0.894,80,2.165,89,0.811,98,1.768,114,2.154,144,2.921,146,2.921,152,2.28,155,2.921,156,4.029,157,2.026,158,3.203,159,4.029,160,2.154,161,2.772,162,2.457,163,4.029,164,4.029,165,4.029,166,3.556,167,3.556,168,3.203,169,3.556,175,3.203,176,2.581,177,2.354,212,1.454,344,1.194,346,1.31,437,1.647,438,1.941,439,4.747,440,4.029,441,4.747,442,4.029,443,4.747,444,4.747,445,4.747,446,4.029,447,1.31]],["t/64",[2,0.126,5,2.916,6,2.185,7,2.338,8,2.046,14,3.477,29,4.373,35,1.693,42,0.832,69,1.496,261,4.373,448,5.152,449,5.152]],["t/66",[2,0.096,5,3.144,69,1.613,183,3.144,188,3.419,450,5.555,451,5.555,452,4.715]],["t/68",[2,0.127,6,1.83,7,0.867,12,1.591,19,1.252,21,0.711,35,0.998,41,1.243,42,1.016,62,1.997,65,1.431,67,1.081,69,1.527,72,0.81,79,1.176,82,1.72,84,1.289,88,2.051,89,1.115,93,1.72,98,1.41,99,1.621,113,1.431,114,0.867,128,0.81,133,1.72,138,1.41,152,1.982,157,1.324,158,1.289,160,1.957,161,3.226,162,2.643,182,2.051,183,1.72,184,1.83,187,1.87,188,1.176,208,1.621,213,1.591,238,2.386,240,2.051,257,2.051,277,1,297,3.97,301,1.87,344,1.176,350,1.431,351,2.554,352,1.431,371,2.277,383,2.58,407,1.431,409,1.176,411,3.891,412,4.091,413,4.091,416,2.277,417,2.277,418,1.87,419,2.554,420,2.051,421,2.051,422,3.232,423,2.051,440,1.621,453,1.91,454,3.039,455,1.91,456,3.213,457,1.91,458,1.431,459,1.91,460,1.621,461,1.621,462,1.91,463,1.91,464,1.621,465,1.91,466,1.91,467,3.232,468,5.016,469,5.016,470,5.016,471,1.621,472,1.621,473,3.039]],["t/70",[2,0.127,33,0.771,35,1.687,42,1.018,56,2.415,69,1.139,89,1.089,132,2.415,137,4.551,155,2.415,162,1.664,166,3.848,172,2.055,184,2.674,187,2.415,202,2.221,213,2.69,232,5.156,236,5.156,238,2.576,242,3.848,262,3.33,263,4.551,474,2.94,475,5.136,476,3.924,477,3.924,478,3.924,479,3.924,480,3.924,481,3.924,482,3.924,483,3.924,484,3.924,485,3.924,486,5.136,487,5.136,488,5.136]],["t/72",[2,0.127,33,0.683,58,2.384,69,1.639,72,1.93,89,0.965,138,1.696,157,1.592,162,1.93,179,3.411,190,3.072,227,3.411,238,1.93,266,3.072,323,3.864,458,3.411,489,4.552,490,4.552,491,4.552,492,4.552,493,4.552,494,3.864,495,4.552,496,4.552]],["t/74",[2,0.127,7,0.964,10,0.796,11,0.964,14,1.434,33,0.496,35,0.698,41,0.698,42,0.343,43,1.231,49,2.085,50,3.115,59,2.971,62,0.901,69,0.96,70,2.675,71,1.113,72,0.901,83,3.345,89,0.451,98,1.511,115,3.884,126,1.871,128,0.901,135,2.477,138,1.705,141,1.203,144,2.817,157,0.743,162,0.901,169,2.477,177,1.308,179,1.593,205,3.884,212,3.039,226,1.804,238,0.901,260,4.244,267,1.804,268,2.806,273,3.884,279,3.088,350,3.429,363,3.884,389,1.804,395,1.804,399,5.142,400,1.593,423,3.088,447,1.434,474,1.593,497,2.126,498,2.126,499,2.126,500,2.126,501,1.804,502,3.306,503,2.126,504,2.126,505,5.479,506,1.804,507,5.249,508,4.576,509,4.576,510,4.576,511,5.665,512,5.665,513,4.576,514,4.576,515,4.576,516,4.576,517,4.576,518,3.443,519,4.576,520,4.057,521,3.306,522,2.126,523,4.057,524,2.126,525,1.593,526,2.126]],["t/76",[2,0.089,33,0.773,89,1.092,113,3.86,128,2.185,141,2.916,190,3.477,238,2.185,308,4.373,320,5.166,334,4.853,418,3.171,456,4.373,474,3.86,494,4.373,527,5.152,528,5.152,529,5.152,530,4.373,531,5.152,532,5.152,533,5.152,534,5.152,535,5.152,536,4.373,537,4.373,538,5.152]],["t/78",[2,0.113,7,2.954,14,2.935,31,3.259,32,3.259,33,0.653,67,2.462,81,2.677,82,2.462,98,2.425,102,3.259,104,3.692,114,1.973,128,2.55,138,1.62,188,2.677,221,3.692,266,2.935,269,3.259,297,2.677,312,3.692,314,4.658,335,3.692,337,3.692,345,3.259,352,3.259,382,3.692,409,2.677,418,3.7,428,5.103,506,3.692,525,3.259,536,4.658,537,3.692,539,5.488,540,4.35,541,4.35,542,3.692,543,5.488,544,5.488,545,5.488,546,5.488,547,4.35,548,4.35,549,4.35,550,4.35,551,4.35,552,4.35,553,4.35,554,4.35,555,4.35,556,4.35,557,4.35,558,4.35,559,4.35,560,4.35,561,4.35,562,4.35,563,4.35,564,4.35,565,4.35]],["t/80",[2,0.12,9,2.979,10,1.474,31,3.899,32,3.899,33,0.919,42,1.05,89,1.298,162,2.758,172,2.725,404,3.899,447,3.512,566,5.204,567,5.204]],["t/82",[2,0.124,8,1.914,10,1.576,16,2.599,18,1.488,19,1.399,28,2.669,35,1.583,41,1.583,42,0.944,43,2.178,44,2.178,45,2.523,49,2.322,51,2.966,52,2.966,62,2.48,63,2.845,67,2.728,74,3.61,78,3.61,89,1.021,277,2.523,406,4.09]],["t/84",[2,0.127,3,2.764,7,0.979,10,0.52,12,1.13,19,1.599,23,1.751,33,0.324,41,1.099,42,1.032,62,2.533,69,1.339,72,1.418,82,1.221,84,1.456,88,3.564,89,1.119,93,1.221,98,1.246,132,2.059,133,2.611,138,1.246,152,2.145,157,1.432,160,2.583,161,3.276,162,1.956,182,2.257,184,1.956,187,2.059,213,1.751,217,3.069,238,2.533,240,2.257,257,2.257,297,3.934,301,2.059,336,2.506,351,2.257,371,2.506,407,2.506,408,2.839,409,2.839,410,2.506,411,4.167,412,4.475,413,4.475,414,2.506,415,2.839,416,3.457,417,3.069,418,1.328,419,2.257,420,2.257,421,2.257,422,3.457,423,2.257,467,1.617,471,1.832,472,1.832]],["t/87",[2,0.127,15,0.916,18,1.138,19,1.122,30,1.193,33,0.682,41,0.557,42,0.446,44,1.439,49,2.619,50,2.581,62,0.282,63,2.572,69,1.406,70,1.563,72,0.518,81,1.509,82,1.188,83,1.143,89,0.986,93,2.633,98,2.131,125,3.648,126,0.692,133,0.692,135,3.693,144,1.509,146,1.509,152,0.349,154,1.387,157,0.592,160,0.555,161,2.108,168,0.449,172,2.32,174,0.449,175,1.654,177,0.752,183,1.562,184,2.266,186,1.417,189,1.836,190,2.488,192,3.326,202,1.562,213,2.108,238,1.17,242,1.836,246,4.184,260,3.693,265,1.836,277,3.036,279,2.607,285,2.081,292,4.184,299,0.565,301,1.043,302,2.081,317,0.565,344,2.269,345,0.499,351,0.825,353,4.316,359,2.342,370,3.129,384,3.129,390,3.761,391,3.129,400,3.406,409,1.043,411,0.825,414,1.269,419,1.654,420,2.488,421,1.143,437,1.037,442,1.782,446,1.037,447,1.654,452,0.565,458,1.836,460,1.037,461,0.565,464,1.037,467,0.916,501,1.782,518,2.342,525,3.693,530,1.037,542,3.129,568,4.929,569,5.084,570,3.687,571,3.687,572,2.451,573,2.451,574,2.451,575,3.687,576,3.687,577,3.687,578,3.687,579,3.687,580,3.032,581,2.451,582,0.666,583,0.666,584,0.666,585,0.666,586,1.694,587,0.666,588,0.666,589,0.666,590,2.099,591,1.222,592,1.222,593,2.099,594,1.222,595,1.222,596,1.222]],["t/89",[2,0.127,10,0.849,18,1.879,19,1.023,21,1.781,28,1.495,30,1.716,33,0.529,42,0.569,44,2.168,47,2.17,103,2.992,114,1.599,128,1.495,138,1.313,141,2.707,152,1.846,155,2.17,157,1.233,173,2.641,174,3.228,175,3.228,176,3.228,183,2.707,184,2.468,185,4.361,186,3.928,334,2.641,344,2.17,346,3.228,597,3.525,598,3.525,599,3.525,600,3.525]]],"invertedIndex":[["",{"_index":2,"t":{"2":{"position":[[5,6],[12,5],[24,6],[33,4],[49,4],[61,4],[71,6],[83,4],[96,4],[103,6],[124,3],[129,6],[136,13],[153,6],[160,3],[169,3],[177,4],[189,3],[212,6],[236,6]]},"4":{"position":[[0,6],[7,4],[35,3],[41,6],[55,4]]},"6":{"position":[[3,3],[11,3],[23,3],[27,2],[30,6],[43,4],[50,3],[56,4],[70,3],[85,4],[99,3],[144,3]]},"8":{"position":[[11,3],[23,3],[27,2],[30,6],[43,4],[50,3],[56,4],[65,2],[86,3],[101,4],[107,3],[128,3],[148,3],[179,3],[206,3],[218,6],[255,6],[304,3]]},"10":{"position":[[11,6],[18,3],[30,3],[45,4],[50,3],[62,6],[72,4],[90,6],[117,6],[124,3],[140,6],[150,4],[155,3],[167,6],[178,3],[186,7],[197,4],[231,6],[238,3],[277,6],[284,4],[309,3],[343,3],[385,3]]},"12":{"position":[[9,3],[33,4]]},"14":{"position":[[2,3],[23,3],[37,3]]},"16":{"position":[[2,3],[12,3],[21,4],[26,5],[32,6],[39,4],[44,3],[48,7],[70,3],[81,21],[113,20],[163,3],[185,21],[219,6],[226,4],[231,4],[236,5],[251,4],[256,10],[296,5],[304,4],[309,2],[312,4],[317,4],[322,6],[329,7],[337,4],[342,3],[346,6],[355,10],[366,3],[376,6],[400,3],[410,3],[414,5],[423,5],[431,9],[441,7],[449,2],[452,3],[456,9],[466,3],[470,13],[487,3],[491,10],[512,3],[519,3],[536,3],[540,3],[546,21],[568,6],[575,8],[589,2],[594,7],[623,21],[645,6],[654,7],[667,4],[674,1],[676,4],[681,15],[697,9],[708,5],[717,5],[724,5],[733,5],[740,12],[756,12],[780,3],[784,6],[793,3],[797,11],[809,6],[817,13],[832,7],[841,6],[851,6],[860,7],[869,6],[876,5],[886,6],[893,5],[902,7],[911,6],[918,5],[928,6],[935,5],[944,7],[953,6],[960,12],[977,6],[984,12],[1004,4],[1017,4],[1024,10],[1045,4],[1050,10],[1090,5],[1098,4],[1103,2],[1106,4],[1111,4],[1116,6],[1123,7],[1131,4],[1143,4],[1148,3],[1158,3],[1162,6],[1171,12],[1184,10],[1195,3],[1199,8],[1209,6],[1224,6],[1234,6],[1241,4],[1246,8],[1272,3],[1282,3],[1286,5],[1295,5],[1303,9],[1313,7],[1321,2],[1324,3],[1328,9],[1338,3],[1342,13],[1359,3],[1363,10],[1381,3],[1385,3],[1389,3],[1395,21],[1417,6],[1427,2],[1451,21],[1473,6],[1480,15],[1496,9],[1506,8],[1521,2],[1535,21],[1557,6],[1564,15],[1580,9],[1590,8],[1605,2],[1619,5],[1626,2],[1632,5],[1641,12],[1663,7],[1672,21],[1694,7],[1705,2],[1719,4],[1724,15],[1740,9],[1752,7],[1761,7],[1772,5],[1779,5],[1788,5],[1795,5],[1804,12],[1818,12],[1833,5],[1853,3],[1857,6],[1866,3],[1870,19],[1890,6],[1898,13],[1914,6],[1921,3],[1925,7],[1934,6],[1941,8],[1958,6],[1965,8],[1978,6],[1985,3],[1989,7],[1998,6],[2005,8],[2022,6],[2029,8],[2042,6],[2049,3],[2053,7],[2062,6],[2069,15],[2093,6],[2100,15],[2124,4],[2137,4],[2144,10],[2165,4],[2170,10],[2210,5],[2218,4],[2223,2],[2226,4],[2231,4],[2236,6],[2243,7],[2251,4],[2263,4],[2268,3],[2278,3],[2282,6],[2291,12],[2304,10],[2315,3],[2319,8],[2329,6],[2344,6],[2354,6],[2361,4],[2366,8],[2392,3],[2402,3],[2406,5],[2415,5],[2423,9],[2433,7],[2441,2],[2444,3],[2448,9],[2458,3],[2462,13],[2479,3],[2483,10],[2501,3],[2505,3],[2509,3],[2515,21],[2537,6],[2547,2],[2571,21],[2593,6],[2600,15],[2616,9],[2626,8],[2641,2],[2655,21],[2677,6],[2684,15],[2700,9],[2710,8],[2725,2],[2739,5],[2746,2],[2752,5],[2761,12],[2783,7],[2792,21],[2814,7],[2825,2],[2839,4],[2844,15],[2860,9],[2872,7],[2881,7],[2892,5],[2899,5],[2908,5],[2915,5],[2924,12],[2938,12],[2953,5],[2973,3],[2977,16],[2994,6],[3002,13],[3017,10],[3028,6],[3050,6],[3057,3],[3061,7],[3070,6],[3083,6],[3092,6],[3099,3],[3103,7],[3112,6],[3119,8],[3136,6],[3143,8],[3156,6],[3163,3],[3167,7],[3176,6],[3183,8],[3200,6],[3207,8],[3220,6],[3227,3],[3231,7],[3240,6],[3247,15],[3271,6],[3278,15],[3302,3],[3306,3],[3325,3],[3335,3],[3359,10],[3372,13],[3389,6],[3396,4],[3401,4],[3406,5],[3412,3],[3416,3],[3422,10],[3433,6],[3440,6],[3447,11],[3460,9],[3460,6],[3467,2],[3473,5],[3500,3],[3507,3],[3511,3],[3529,3],[3533,6],[3542,3],[3546,9],[3556,3],[3566,6],[3573,3],[3577,6],[3586,6],[3593,11],[3606,9],[3606,6],[3613,2],[3619,5],[3646,3],[3650,3],[3654,3],[3660,10],[3671,6],[3678,6],[3692,3],[3699,3],[3703,3],[3724,3],[3728,6],[3737,3],[3741,17],[3759,3],[3770,6],[3777,3],[3781,6],[3790,6],[3797,11],[3810,9],[3810,6],[3817,2],[3823,5],[3850,3],[3854,3],[3858,3],[3864,10],[3875,6],[3882,6],[3896,3],[3903,3],[3907,3],[3928,3],[3932,14],[3947,3],[3952,10],[3963,6]]},"18":{"position":[[23,3],[53,6],[60,4],[65,4],[70,5],[76,3],[80,3],[86,10],[97,6],[104,6],[111,11],[124,9],[124,6],[131,2],[137,5],[159,3],[163,9],[173,14],[191,3],[201,4],[207,5],[213,14],[230,3],[235,6],[242,7],[253,4],[260,3],[266,7],[275,5],[283,4],[290,7],[299,5],[305,5],[314,4],[319,5],[328,7],[337,7],[348,4],[353,7],[366,3],[370,12],[390,6],[397,3],[401,6],[410,6],[417,11],[430,9],[430,6],[437,2],[443,5],[470,3],[474,3],[478,3],[484,10],[495,6],[502,6],[511,3],[515,17],[533,14],[548,5],[556,5],[563,3],[573,6],[580,3],[584,7],[593,3],[603,3],[609,6],[616,3],[620,7],[629,5],[641,5],[649,6],[656,3],[660,7],[669,5],[675,5],[687,5],[693,8],[706,6],[713,3],[717,7],[726,7],[740,5],[746,10],[765,3],[769,13],[786,3],[790,12],[811,6],[818,3],[822,6],[831,6],[838,11],[851,9],[851,6],[858,2],[864,5],[891,3],[895,3],[899,3],[905,10],[916,6],[923,6],[932,3],[936,14],[951,14],[966,5],[974,5],[981,3],[991,6],[998,3],[1002,7],[1011,3],[1021,3],[1027,6],[1034,3],[1038,7],[1047,5],[1059,5],[1067,6],[1074,3],[1078,7],[1087,5],[1093,5],[1105,5],[1111,8],[1124,6],[1131,3],[1135,7],[1144,7],[1158,5],[1164,10],[1179,6],[1186,17],[1204,15],[1220,4],[1231,3],[1235,10],[1248,4],[1260,7]]},"20":{"position":[[19,6],[26,3]]},"22":{"position":[[0,4],[12,6],[74,9],[109,6],[116,4],[121,4],[126,5],[132,3],[136,7],[150,7],[158,4],[171,7],[179,4],[191,6],[201,3],[205,7],[219,7],[227,12],[249,7],[257,12],[270,4],[275,2],[288,3],[292,7],[306,7],[314,9],[333,7],[341,9],[351,4],[356,2],[369,13],[385,5],[407,6],[414,4],[419,4],[424,5],[430,3],[434,7],[448,7],[456,4],[461,4],[468,2],[471,3],[475,3],[481,10],[494,7],[505,3],[509,7],[523,3],[527,4],[534,5],[540,3],[546,2],[549,3],[553,3],[560,3],[564,8],[575,8],[584,2],[587,4],[594,3],[598,13],[614,5],[620,2],[623,8],[634,7],[642,9],[652,13],[668,3],[672,7],[686,3],[690,4],[697,5],[703,3],[709,2],[712,3],[716,3],[723,3],[727,8],[738,8],[747,2],[750,4],[757,3],[761,13],[777,5],[783,2],[786,8],[797,7],[805,9],[815,13],[831,2],[843,2],[868,6],[875,4],[880,4],[885,5],[891,3],[895,7],[909,3],[913,6],[922,2],[925,3],[929,2],[933,3],[937,9],[949,2],[952,3],[956,2],[960,12],[973,15],[973,2],[976,4],[981,7],[995,12],[1008,9],[1018,3],[1022,2],[1026,3],[1030,6],[1039,2],[1042,3],[1046,2],[1050,12],[1063,12],[1063,2],[1066,4],[1071,4],[1082,12],[1095,6],[1102,3],[1106,2],[1110,7],[1118,4],[1123,6],[1131,7],[1139,4],[1144,6],[1153,9],[1165,6],[1173,3],[1177,7],[1191,3],[1195,6],[1204,3],[1208,2],[1211,10],[1222,2],[1225,3],[1232,3],[1236,9],[1248,3],[1252,2],[1255,10],[1266,2],[1269,3],[1275,12],[1288,15],[1288,2],[1291,4],[1296,7],[1311,12],[1324,9],[1334,10],[1345,2],[1348,3],[1355,3],[1359,6],[1368,3],[1372,2],[1375,10],[1386,2],[1389,3],[1395,12],[1408,12],[1408,2],[1411,4],[1416,4],[1428,12],[1441,6],[1448,10],[1459,2],[1462,3],[1469,7],[1477,12],[1490,6],[1499,7],[1507,12],[1520,8],[1529,10],[1540,6],[1548,9],[1559,6],[1569,3],[1573,7],[1587,3],[1591,6],[1600,3],[1604,2],[1607,10],[1618,2],[1621,3],[1628,3],[1632,9],[1644,3],[1648,2],[1651,10],[1662,2],[1665,3],[1671,12],[1684,15],[1684,2],[1687,4],[1692,7],[1707,12],[1720,9],[1730,10],[1741,2],[1744,3],[1751,3],[1755,6],[1764,3],[1768,2],[1771,10],[1782,2],[1785,3],[1791,12],[1804,12],[1804,2],[1807,4],[1812,4],[1824,12],[1837,6],[1844,10],[1855,2],[1858,3],[1865,7],[1873,9],[1883,6],[1892,7],[1900,9],[1910,8],[1919,10],[1930,6],[1938,9],[1949,6],[1959,5],[1974,5],[1986,6],[1993,4],[1998,4],[2003,5],[2009,3],[2013,7],[2027,7],[2035,4],[2040,5],[2047,3],[2051,7],[2065,7],[2073,12],[2086,5],[2092,8],[2103,3],[2107,7],[2121,7],[2129,9],[2139,5],[2145,8],[2156,5],[2163,5],[2172,9],[2188,5],[2197,5],[2206,6],[2213,4],[2218,4],[2223,5],[2229,3],[2233,7],[2247,7],[2255,4],[2260,5],[2266,3],[2270,2],[2275,3],[2279,7],[2293,7],[2301,12],[2314,3],[2318,5],[2324,10],[2335,2],[2338,3],[2346,3],[2350,7],[2364,7],[2372,9],[2382,3],[2386,5],[2392,10],[2403,2],[2406,3],[2421,6],[2437,4],[2486,18],[2512,4],[2525,16],[2548,3],[2559,5],[2583,6],[2590,4],[2595,4],[2600,5],[2606,3],[2610,7],[2629,3],[2657,3],[2661,5],[2669,14],[2684,6],[2696,9],[2728,3],[2732,6],[2741,14],[2756,5],[2763,3],[2767,8],[2778,9],[2788,5],[2795,11],[2807,4],[2833,7],[2841,4],[2846,6],[2854,7],[2862,4],[2867,8],[2877,3],[2881,7],[2900,3],[2928,3],[2932,5],[2940,14],[2955,6],[2967,17],[3008,3],[3012,6],[3021,3],[3025,14],[3040,5],[3048,3],[3052,8],[3063,3],[3067,9],[3077,5],[3084,11],[3096,4],[3123,7],[3131,12],[3144,6],[3153,7],[3161,12],[3174,8],[3185,3],[3189,7],[3208,3],[3236,14],[3251,6],[3263,14],[3283,10],[3294,5],[3322,3],[3326,6],[3335,3],[3339,14],[3354,5],[3362,3],[3366,8],[3377,3],[3381,9],[3391,5],[3398,11],[3410,4],[3437,7],[3445,9],[3455,6],[3464,7],[3472,9],[3482,8],[3497,20],[3522,20],[3560,9],[3574,6],[3581,4],[3586,4],[3591,5],[3597,3],[3601,7],[3625,9],[3646,3],[3650,3],[3656,20],[3677,14],[3694,4],[3707,7],[3717,4],[3728,7],[3738,11],[3770,1],[3775,1],[3791,7],[3799,4],[3804,3],[3809,3],[3813,7],[3832,9],[3842,3],[3846,7],[3856,3],[3860,16],[3880,7],[3888,4],[3899,7],[3910,7],[3918,4],[3929,7],[3940,7],[3948,11],[3976,1],[3981,1],[3986,3],[3990,9],[4002,7],[4010,5],[4019,7],[4027,12],[4040,3],[4044,20],[4065,9],[4078,3],[4082,7],[4101,9],[4111,3],[4115,7],[4125,3],[4129,16],[4149,7],[4157,4],[4168,7],[4179,7],[4187,4],[4198,7],[4209,7],[4217,11],[4245,1],[4250,1],[4255,3],[4259,9],[4271,7],[4279,5],[4288,7],[4296,9],[4306,3],[4310,20],[4331,9],[4344,15],[4364,20],[4389,4],[4403,6],[4410,4],[4415,4],[4420,5],[4426,3],[4430,7],[4449,4],[4456,3],[4460,11],[4474,15],[4490,16],[4509,4],[4516,5],[4530,5],[4538,5],[4544,7],[4552,7],[4562,6],[4570,3],[4607,4],[4614,15],[4630,11],[4642,6],[4662,4],[4667,4],[4672,5],[4678,7],[4686,4],[4691,11],[4704,3],[4708,7],[4733,4],[4744,3],[4748,7],[4758,3],[4762,15],[4778,11],[4790,6],[4808,7],[4816,12],[4829,7],[4839,3],[4843,7],[4868,4],[4879,3],[4883,7],[4893,3],[4897,15],[4913,11],[4925,6],[4943,7],[4951,9],[4961,7],[4971,13],[4986,4],[5008,9],[5023,3],[5027,4],[5032,3],[5038,6],[5045,4],[5050,4],[5055,5],[5061,3],[5065,7],[5079,7],[5087,4],[5092,13],[5107,3],[5111,7],[5125,7],[5133,12],[5146,13],[5160,8],[5171,3],[5175,7],[5189,7],[5197,9],[5207,13],[5221,8],[5232,21],[5266,11],[5298,5],[5307,11],[5342,5],[5359,6],[5366,4],[5371,4],[5376,5],[5382,3],[5386,7],[5400,3],[5404,11],[5426,1],[5445,12],[5466,3],[5470,14],[5487,18],[5506,11],[5519,3],[5523,15],[5541,19],[5561,11],[5574,3],[5578,15],[5596,19],[5616,11],[5629,3],[5633,10],[5646,14],[5661,11],[5674,7],[5682,4],[5687,14],[5703,7],[5711,4],[5716,15],[5733,7],[5741,4],[5746,15],[5763,7],[5771,4],[5776,10],[5788,3],[5792,7],[5806,3],[5810,11],[5833,1],[5852,12],[5873,3],[5877,14],[5894,3],[5898,18],[5917,11],[5931,3],[5935,15],[5953,3],[5957,19],[5977,11],[5991,3],[5995,15],[6013,3],[6017,19],[6037,11],[6051,3],[6055,10],[6068,3],[6072,14],[6087,11],[6101,7],[6109,12],[6122,14],[6139,7],[6147,12],[6160,15],[6178,7],[6186,12],[6199,15],[6217,7],[6225,12],[6238,10],[6251,3],[6255,7],[6269,3],[6273,11],[6296,1],[6315,12],[6336,3],[6340,14],[6357,3],[6361,18],[6380,11],[6394,3],[6398,15],[6416,3],[6420,19],[6440,11],[6454,3],[6458,15],[6476,3],[6480,19],[6500,11],[6514,3],[6518,10],[6531,3],[6535,14],[6550,11],[6564,7],[6572,9],[6582,14],[6599,7],[6607,9],[6617,15],[6635,7],[6643,9],[6653,15],[6671,7],[6679,9],[6689,10]]},"24":{"position":[[0,4]]},"26":{"position":[[0,4]]},"28":{"position":[[0,4]]},"30":{"position":[[0,4]]},"32":{"position":[[7,3],[32,3],[53,6],[60,4],[74,6],[84,10]]},"34":{"position":[[6,3],[10,3],[14,4],[22,9],[35,6],[42,4],[50,6],[62,8],[74,4],[79,6],[86,2],[92,5],[101,4],[106,2],[109,5],[120,6],[132,10],[145,4],[152,11],[169,5],[180,10],[193,6],[202,10],[215,1],[221,18],[245,12],[260,4],[267,10],[280,4],[289,14],[309,12],[324,4],[331,10],[344,4],[353,7],[366,20],[389,4],[396,20],[419,4],[426,19],[448,4],[457,16],[476,4],[483,25],[511,4],[528,3],[532,3],[536,4],[544,9],[557,6],[564,4],[572,6],[584,8],[596,4],[601,6],[608,2],[614,5],[623,4],[628,2],[631,5]]},"37":{"position":[[4,6],[11,4],[27,4]]},"39":{"position":[[2,3],[16,4],[21,3],[29,4],[47,3],[66,4],[84,6],[91,8],[101,3],[106,6],[113,2],[117,6],[124,5],[131,3],[137,9],[155,5]]},"41":{"position":[[9,6],[16,10],[39,4],[48,7],[56,3],[63,8],[76,6],[83,11],[114,6],[126,11],[143,5],[154,10],[167,6],[176,10],[189,1],[208,2],[211,1],[213,1],[215,1],[217,5],[223,1],[287,6],[299,11],[316,5],[327,10],[340,1],[344,10],[357,1],[369,10],[384,1],[582,11],[594,5],[625,11],[637,5],[643,10],[676,1],[718,6],[727,6],[739,3],[747,1],[778,11],[790,5],[796,10],[822,10],[868,3],[931,6],[938,18],[959,6],[966,14],[982,18],[1003,14],[1040,3],[1044,6],[1053,2],[1063,10],[1097,4],[1104,22],[1142,12],[1156,9],[1166,7],[1174,7],[1182,5],[1188,6],[1201,4],[1208,10],[1220,7],[1228,4],[1233,10],[1244,6],[1257,4],[1264,6],[1271,7],[1280,3],[1286,3],[1305,4],[1310,11],[1328,7],[1339,4],[1361,7],[1371,4],[1403,6],[1415,7],[1425,4],[1437,20],[1460,20],[1487,4],[1504,6],[1516,7],[1543,4],[1549,20],[1571,1],[1573,4],[1578,6],[1585,8],[1594,2],[1597,7],[1605,2],[1608,4],[1613,4],[1619,4],[1624,7],[1632,1],[1634,7],[1642,2],[1645,9],[1655,1],[1657,8],[1672,4],[1677,11],[1689,20],[1711,1],[1713,4],[1718,6],[1725,2],[1728,5],[1734,1],[1736,6],[1743,6],[1750,9],[1760,1],[1762,10],[1773,4],[1778,1],[1780,6],[1793,4],[1798,11],[1810,19],[1831,1],[1833,7],[1841,4],[1846,2],[1849,10],[1860,7],[1868,3],[1872,4],[1877,7],[1885,4],[1890,10],[1901,4],[1906,4],[1911,1],[1913,6],[1926,4],[1931,11],[1943,6],[1950,16],[1968,2],[1980,2],[1988,4],[1997,6],[2004,25],[2031,13],[2045,6],[2073,4],[2082,5],[2091,6],[2107,7],[2138,3]]},"43":{"position":[[10,4]]},"45":{"position":[[6,3],[10,3],[18,3],[30,3],[34,2],[37,6],[50,4],[57,3],[63,4],[87,6],[101,3],[113,3],[117,2],[120,6],[133,4],[140,3],[146,4],[159,2],[177,6],[197,10]]},"47":{"position":[[0,3],[8,3],[20,3],[24,2],[27,6],[40,4],[47,3],[53,4]]},"49":{"position":[[0,6],[14,3],[26,3],[30,2],[33,6],[46,4],[53,3],[59,4],[72,2]]},"55":{"position":[[0,3],[8,3],[20,3],[24,2],[27,6],[40,4],[47,3],[53,4],[67,3],[85,6],[92,3],[107,4],[112,3]]},"57":{"position":[[0,1],[6,4],[11,3],[18,6],[25,6],[32,3],[36,6],[43,6],[50,5],[56,6],[65,6],[82,6],[91,6],[117,3],[121,2],[126,6],[135,6],[143,3],[149,7],[173,13],[208,4],[236,3],[262,14],[278,4],[283,5],[289,6],[296,9],[306,6],[313,9],[323,4],[328,3],[332,1],[334,1],[336,1],[338,1],[340,5],[346,1],[363,8],[372,6],[381,6],[398,6],[407,6],[433,3],[437,2],[442,6],[451,2],[455,3],[459,9],[469,6],[476,3],[481,7],[505,3],[509,9],[519,6],[526,13],[561,4],[589,3],[615,14],[631,4],[636,5],[642,6],[649,9],[659,6],[666,9],[676,4],[681,3],[685,1],[687,1],[689,1],[691,1],[693,5],[699,1],[715,8],[725,10],[738,7],[746,4],[751,5],[757,6],[764,9],[775,7],[790,5],[801,3],[813,3],[825,10],[836,6],[843,9],[853,4],[858,3],[862,3],[867,10],[894,8],[908,7],[916,1],[918,1],[920,1],[922,1],[924,5],[930,1],[933,7],[944,10],[967,8],[983,1],[995,4],[1000,6],[1013,4],[1019,4],[1024,6],[1031,7],[1050,4],[1055,6],[1070,6],[1077,3],[1081,6],[1088,2],[1091,6],[1098,6],[1105,5],[1113,3],[1130,11],[1142,14],[1158,2],[1161,4],[1166,4],[1171,6],[1178,3],[1189,4],[1204,4],[1215,6],[1226,4],[1242,11],[1254,14],[1270,2],[1273,4],[1278,4],[1283,6],[1290,4],[1302,4],[1314,2],[1323,14],[1339,2],[1342,4],[1347,4],[1352,6],[1359,2],[1369,4],[1379,7],[1387,6],[1394,4],[1399,3],[1403,7],[1411,14],[1427,2],[1430,4],[1435,4],[1440,6],[1447,7],[1462,4],[1472,3],[1476,6],[1483,14],[1499,2],[1502,4],[1507,4],[1512,6],[1519,6],[1533,4],[1543,3],[1547,4],[1552,14],[1568,2],[1571,4],[1576,4],[1581,6],[1588,4],[1600,4],[1612,3],[1623,10],[1636,7],[1644,2],[1647,4],[1653,7],[1663,10],[1674,4],[1679,6],[1686,3],[1690,3],[1695,10],[1708,7],[1722,4],[1730,7],[1745,3],[1772,3],[1786,7],[1835,5],[1841,7],[1850,5],[1859,10],[1876,4],[1887,6],[1898,4],[1908,10],[1921,7],[1929,2],[1932,4],[1938,7],[1948,10],[1959,4],[1964,6],[1971,4],[1977,10],[1990,7],[2004,4],[2012,7],[2027,3],[2054,3],[2068,7],[2117,5],[2123,7],[2132,5],[2141,10]]},"59":{"position":[[18,3],[35,3],[44,4],[49,5],[55,6],[62,4],[67,3],[79,3],[101,3],[106,3],[131,3],[138,3],[149,13],[179,3],[200,3]]},"61":{"position":[[9,3],[26,6],[33,3],[37,6],[44,2],[47,6],[54,6],[61,4],[66,4],[71,5],[86,4],[91,10],[131,5],[139,4],[144,2],[147,4],[152,4],[157,6],[164,7],[172,4],[177,3],[181,6],[190,10],[201,3],[211,6],[235,3],[245,3],[249,5],[258,5],[266,9],[276,7],[284,2],[287,3],[291,9],[301,3],[305,13],[322,3],[326,10],[347,3],[354,3],[371,3],[375,3],[381,15],[397,6],[409,7],[417,4],[425,6],[438,4],[464,3],[468,13],[483,8],[492,11],[507,3],[511,11],[523,6],[531,13],[546,13],[560,5],[566,7],[576,7],[585,5],[593,2],[609,13],[623,7],[648,4],[653,10],[693,5],[701,4],[706,2],[709,4],[714,4],[719,6],[726,7],[734,4],[739,3],[743,6],[752,10],[763,2],[772,6],[796,3],[806,3],[810,5],[819,5],[827,9],[837,7],[845,2],[848,3],[852,9],[862,3],[866,13],[883,3],[887,10],[908,3],[915,3],[932,3],[936,3],[942,15],[958,6],[970,7],[978,4],[986,6],[999,4],[1025,3],[1029,13],[1044,8],[1053,11],[1068,3],[1072,11],[1084,6],[1092,13],[1107,13],[1121,5],[1127,7],[1137,7],[1146,5],[1154,2],[1170,13],[1184,7],[1204,8],[1230,4],[1235,10],[1275,5],[1283,4],[1288,2],[1291,4],[1296,4],[1301,6],[1308,7],[1316,4],[1321,3],[1325,6],[1334,10],[1345,7],[1359,6],[1383,3],[1393,3],[1397,5],[1406,5],[1414,9],[1424,7],[1432,2],[1435,3],[1439,9],[1449,3],[1453,13],[1470,3],[1474,10],[1495,3],[1502,3],[1519,3],[1523,3],[1529,15],[1545,6],[1557,7],[1565,4],[1573,6],[1586,4],[1612,3],[1616,13],[1631,8],[1640,11],[1655,3],[1659,11],[1671,6],[1679,13],[1694,13],[1708,5],[1714,7],[1724,7],[1733,5],[1741,2],[1757,13],[1771,7],[1791,4],[1804,4],[1811,10],[1832,4],[1837,10],[1877,5],[1885,4],[1890,2],[1893,4],[1898,4],[1903,6],[1910,7],[1918,4],[1930,4],[1935,3],[1945,3],[1949,6],[1958,12],[1971,10],[1982,3],[1986,8],[1996,6],[2011,6],[2021,6],[2028,4],[2033,8],[2059,3],[2069,3],[2073,5],[2082,5],[2090,9],[2100,7],[2108,2],[2111,3],[2115,9],[2125,3],[2129,13],[2146,3],[2150,10],[2172,3],[2179,3],[2196,3],[2200,3],[2206,15],[2222,6],[2235,19],[2258,6],[2271,4],[2297,3],[2301,13],[2317,3],[2321,19],[2341,6],[2349,13],[2365,3],[2370,3],[2374,5],[2382,13],[2399,6],[2406,3],[2410,7],[2418,5],[2432,4],[2445,4],[2452,10],[2473,4],[2478,10],[2518,5],[2526,4],[2531,2],[2534,4],[2539,4],[2544,6],[2551,7],[2559,4],[2571,4],[2576,3],[2586,3],[2590,6],[2599,12],[2612,10],[2623,3],[2627,8],[2637,6],[2652,6],[2662,6],[2669,4],[2674,8],[2700,3],[2710,3],[2714,5],[2723,5],[2731,9],[2741,7],[2749,2],[2752,3],[2756,9],[2766,3],[2770,13],[2787,3],[2791,10],[2813,3],[2820,3],[2837,3],[2841,3],[2847,15],[2863,6],[2876,16],[2896,6],[2909,4],[2935,17],[2953,8],[2962,11],[2976,19],[2998,3],[3002,16],[3019,6],[3027,13],[3046,3],[3050,3],[3054,6],[3062,2],[3065,6],[3072,9],[3082,19],[3102,10],[3113,8],[3127,3],[3132,3],[3136,5],[3144,8],[3156,6],[3163,3],[3167,7],[3175,5],[3188,13],[3202,3],[3211,6],[3218,5],[3225,3],[3232,3],[3238,6],[3245,4]]},"64":{"position":[[10,7],[18,4],[23,6],[30,4],[35,7],[44,7],[54,6],[61,4],[66,7],[74,6],[81,9],[91,4],[96,4],[102,7],[112,4],[129,6],[136,6],[143,4]]},"66":{"position":[[15,4]]},"68":{"position":[[0,1],[6,6],[13,4],[27,10],[47,5],[53,6],[60,2],[66,3],[74,1],[80,6],[107,4],[112,5],[118,6],[125,4],[130,7],[138,4],[143,6],[150,4],[155,7],[170,4],[175,5],[181,6],[188,9],[198,6],[205,9],[215,4],[220,4],[243,6],[250,4],[281,6],[288,3],[315,6],[323,7],[372,6],[379,6],[386,3],[390,6],[397,6],[404,5],[413,6],[420,4],[425,7],[433,14],[449,4],[454,5],[460,6],[467,4],[472,7],[480,4],[485,6],[492,4],[497,7],[506,14],[506,6],[513,7],[542,4],[549,14],[565,4],[570,5],[576,6],[583,9],[593,6],[600,9],[610,4],[615,4],[620,1],[622,1],[624,1],[626,1],[628,5],[634,1],[657,6],[664,4],[669,7],[677,14],[693,4],[698,5],[704,6],[711,4],[716,7],[724,4],[729,6],[736,4],[741,7],[750,14],[750,6],[757,7],[785,4],[792,14],[808,4],[813,5],[819,6],[826,9],[836,6],[843,9],[853,4],[858,4],[863,1],[865,1],[867,1],[869,1],[871,5],[877,1],[901,6],[908,4],[913,7],[926,10],[939,7],[947,4],[952,5],[958,6],[965,4],[971,7],[981,10],[992,7],[1000,4],[1005,6],[1012,4],[1017,7],[1026,10],[1061,7],[1071,14],[1071,6],[1078,7],[1088,7],[1099,10],[1116,4],[1128,10],[1141,7],[1149,4],[1154,5],[1160,6],[1167,9],[1178,7],[1188,10],[1199,6],[1206,9],[1216,4],[1221,4],[1227,10],[1262,7],[1270,1],[1272,1],[1274,1],[1276,1],[1278,5],[1284,1],[1287,7],[1298,10],[1310,1],[1322,4],[1327,6],[1340,4],[1346,4],[1351,6],[1358,7],[1380,9],[1395,4],[1400,6],[1429,4],[1434,1],[1436,1],[1438,2],[1441,6],[1460,2],[1463,6],[1489,4],[1501,6],[1508,6],[1515,3],[1519,6],[1526,6],[1533,5],[1541,3],[1558,11],[1570,14],[1586,2],[1589,4],[1594,4],[1599,6],[1606,3],[1617,4],[1634,6],[1643,6],[1671,11],[1683,14],[1699,2],[1702,4],[1707,4],[1712,6],[1719,3],[1723,3],[1734,4],[1749,4],[1760,6],[1773,4],[1789,11],[1801,14],[1817,2],[1820,4],[1825,4],[1830,6],[1837,4],[1849,4],[1861,3],[1878,11],[1890,14],[1906,2],[1909,4],[1914,4],[1919,6],[1926,3],[1937,4],[1953,6],[1962,6],[1990,11],[2002,14],[2018,2],[2021,4],[2026,4],[2031,6],[2038,3],[2042,3],[2053,4],[2067,4],[2078,6],[2091,4],[2107,11],[2119,14],[2135,2],[2138,4],[2143,4],[2148,6],[2155,4],[2167,4],[2178,3],[2189,10],[2202,7],[2210,2],[2213,4],[2219,7],[2229,10],[2240,4],[2245,6],[2252,3],[2256,3],[2261,10],[2274,7],[2288,4],[2296,7],[2311,3],[2338,3],[2352,7],[2401,5],[2407,7],[2416,5],[2425,10],[2442,4],[2453,6],[2466,4],[2476,10],[2489,7],[2497,2],[2500,4],[2506,7],[2516,10],[2527,4],[2532,6],[2539,4],[2545,10],[2558,7],[2572,4],[2580,7],[2595,3],[2622,3],[2636,7],[2685,5],[2691,7],[2700,5],[2709,10]]},"70":{"position":[[16,6],[23,4],[40,3],[49,3],[53,3],[57,4],[77,3],[84,3],[88,4],[112,3],[127,4],[147,3],[166,11],[166,7],[174,3],[179,4],[184,9],[194,6],[201,4],[206,3],[210,3],[214,4],[236,6],[243,4],[260,10],[271,4],[283,3],[303,9],[313,6],[320,4],[327,3],[349,4],[359,6],[366,3],[370,13],[384,9],[394,1],[397,9],[407,6],[414,4],[421,3],[426,6],[441,3],[461,9],[471,6],[478,4],[485,3],[507,4],[517,3],[521,13],[535,9],[549,9],[559,6],[566,4],[573,3]]},"72":{"position":[[5,6],[12,4],[38,12],[55,6],[64,6],[71,4],[76,3],[80,7],[88,3],[92,2],[96,12],[110,21],[132,5],[138,3],[142,3],[146,4],[151,6],[158,4],[164,6],[174,14],[189,3],[194,4],[201,4],[218,4],[232,12],[258,3],[263,3],[267,7],[275,3],[279,4],[285,12],[299,21],[321,6],[328,5],[334,3],[340,6],[347,6],[354,4],[359,4],[364,6],[373,4],[381,17],[399,3],[403,3],[407,5],[414,4]]},"74":{"position":[[40,19],[79,3],[85,2],[99,3],[132,3],[139,3],[151,3],[163,6],[170,4],[175,8],[184,4],[189,5],[195,4],[200,8],[209,3],[213,7],[221,8],[230,15],[246,2],[249,6],[256,4],[261,5],[267,7],[275,10],[286,11],[298,6],[305,4],[310,5],[316,7],[324,10],[335,6],[342,6],[349,4],[354,5],[360,7],[368,10],[379,8],[388,6],[395,4],[400,5],[406,6],[413,5],[419,19],[440,9],[450,5],[456,15],[475,8],[485,6],[492,5],[506,7],[516,6],[523,7],[531,5],[539,4],[547,11],[566,2],[572,2],[620,7],[628,3],[632,16],[649,5],[656,19],[709,5],[715,5],[733,3],[737,7],[745,8],[754,15],[770,4],[775,6],[782,4],[787,5],[793,7],[801,10],[812,11],[824,6],[831,4],[836,5],[842,7],[850,10],[861,6],[868,6],[875,4],[880,5],[886,7],[894,10],[905,8],[914,6],[921,4],[926,5],[932,6],[939,5],[945,19],[966,9],[976,6],[983,5],[989,15],[1008,8],[1018,6],[1025,5],[1039,7],[1050,6],[1057,7],[1065,5],[1073,4],[1081,11],[1100,2],[1106,2],[1154,6],[1161,4],[1166,16],[1183,19],[1203,5],[1245,4],[1254,3],[1258,5],[1264,13],[1291,3],[1295,7],[1303,8],[1312,15],[1328,4],[1333,6],[1340,4],[1345,5],[1351,7],[1359,10],[1370,11],[1382,6],[1389,4],[1394,5],[1400,7],[1408,10],[1419,6],[1426,6],[1433,4],[1438,5],[1444,7],[1452,10],[1463,8],[1472,6],[1479,4],[1484,5],[1490,6],[1497,5],[1503,19],[1524,9],[1534,6],[1541,5],[1547,15],[1566,8],[1576,6],[1583,5],[1597,7],[1608,6],[1615,7],[1623,5],[1631,4],[1639,11],[1658,2],[1664,2],[1712,6],[1719,17],[1740,16],[1757,19],[1777,5],[1821,17],[1845,6],[1863,6],[1870,5],[1876,10],[1939,6],[1946,10],[1974,6],[1995,3],[1999,7],[2007,8],[2016,15],[2032,4],[2037,6],[2044,4],[2049,5],[2055,7],[2063,10],[2074,11],[2086,6],[2093,4],[2098,5],[2104,7],[2112,10],[2123,6],[2130,6],[2137,4],[2142,5],[2148,7],[2156,10],[2167,8],[2176,6],[2183,4],[2188,5],[2194,6],[2201,5],[2207,19],[2228,9],[2238,6],[2245,5],[2251,15],[2270,8],[2280,6],[2287,5],[2301,7],[2312,6],[2319,7],[2327,5],[2335,4],[2343,11],[2362,2],[2368,2],[2416,6],[2423,4],[2431,16],[2448,19],[2468,5],[2512,4],[2529,6],[2547,6],[2554,4],[2559,19],[2579,5],[2585,10]]},"76":{"position":[[65,6]]},"78":{"position":[[3,7],[16,7],[34,3],[149,3],[172,3]]},"80":{"position":[[0,4],[18,10],[35,6],[42,4],[52,6],[74,7]]},"82":{"position":[[0,6],[14,3],[26,3],[30,2],[33,6],[46,4],[53,3],[59,4],[72,2],[102,6],[109,3],[124,4],[129,3],[155,3]]},"84":{"position":[[0,1],[6,4],[11,6],[21,6],[28,6],[35,3],[39,6],[46,6],[53,5],[59,6],[68,6],[85,6],[94,6],[120,3],[124,2],[129,6],[138,6],[146,3],[152,7],[176,13],[211,4],[239,3],[265,14],[281,4],[286,5],[292,6],[299,9],[309,6],[316,9],[326,4],[331,6],[338,1],[340,1],[342,1],[344,1],[346,5],[352,1],[369,8],[378,6],[387,6],[404,6],[413,6],[439,3],[443,2],[448,6],[457,2],[461,3],[465,9],[475,6],[482,3],[487,7],[511,3],[515,9],[525,6],[532,13],[567,4],[595,3],[621,14],[637,4],[642,5],[648,6],[655,9],[665,6],[672,9],[682,4],[687,6],[694,1],[696,1],[698,1],[700,1],[702,5],[708,1],[724,8],[734,10],[747,7],[755,4],[760,5],[766,6],[773,9],[784,7],[799,5],[810,3],[822,3],[834,10],[845,6],[852,9],[862,4],[867,6],[874,3],[879,10],[906,8],[920,7],[928,1],[930,1],[932,1],[934,1],[936,5],[942,1],[945,7],[956,10],[968,1],[980,4],[985,6],[998,4],[1004,4],[1009,6],[1016,7],[1035,4],[1040,6],[1069,4],[1074,1],[1076,1],[1078,2],[1081,6],[1100,2],[1103,6],[1129,4],[1141,6],[1148,3],[1152,6],[1159,2],[1162,6],[1169,6],[1176,5],[1184,3],[1201,11],[1213,14],[1229,2],[1232,4],[1237,4],[1242,6],[1249,3],[1260,4],[1275,4],[1286,6],[1299,4],[1315,11],[1327,14],[1343,2],[1346,4],[1351,4],[1356,6],[1363,4],[1375,4],[1387,2],[1396,14],[1412,2],[1415,4],[1420,4],[1425,6],[1432,2],[1442,4],[1452,7],[1460,6],[1467,3],[1471,3],[1475,7],[1483,14],[1499,2],[1502,4],[1507,4],[1512,6],[1519,7],[1534,4],[1544,3],[1548,6],[1555,14],[1571,2],[1574,4],[1579,4],[1584,6],[1591,6],[1605,4],[1615,3],[1619,3],[1623,14],[1639,2],[1642,4],[1647,4],[1652,6],[1659,3],[1670,4],[1682,3],[1693,10],[1706,7],[1714,2],[1717,4],[1723,7],[1733,10],[1744,4],[1749,6],[1756,3],[1760,3],[1765,10],[1778,7],[1792,4],[1800,7],[1815,3],[1842,3],[1856,7],[1905,5],[1911,7],[1920,5],[1929,10],[1946,4],[1957,6],[1970,4],[1980,10],[1993,7],[2001,2],[2004,4],[2010,7],[2020,10],[2031,4],[2036,6],[2043,4],[2049,10],[2062,7],[2076,4],[2084,7],[2099,3],[2126,3],[2140,7],[2189,5],[2195,7],[2204,5],[2213,10]]},"87":{"position":[[0,6],[7,3],[11,6],[18,2],[21,6],[28,6],[35,4],[40,4],[45,5],[59,3],[63,3],[67,3],[73,10],[84,6],[91,6],[98,11],[110,8],[122,9],[122,6],[129,2],[134,5],[143,5],[157,3],[176,3],[181,6],[190,2],[198,4],[208,3],[239,19],[261,3],[265,15],[283,3],[295,8],[308,4],[313,10],[326,4],[336,3],[348,14],[378,7],[388,20],[411,5],[417,20],[440,5],[472,3],[476,9],[488,3],[498,4],[504,5],[531,3],[536,2],[549,4],[557,7],[566,5],[574,4],[581,7],[590,3],[596,3],[616,5],[634,3],[638,9],[648,9],[661,3],[671,4],[677,5],[683,9],[711,5],[736,3],[741,2],[754,4],[762,7],[771,5],[779,4],[786,7],[795,5],[803,5],[811,7],[820,3],[826,3],[847,5],[853,4],[872,3],[876,9],[886,5],[892,4],[897,9],[910,3],[920,4],[926,5],[932,9],[957,4],[962,5],[970,4],[983,3],[988,2],[1001,4],[1009,7],[1018,5],[1026,4],[1033,7],[1042,4],[1049,4],[1056,7],[1065,3],[1071,3],[1086,3],[1095,3],[1099,2],[1104,3],[1108,2],[1113,7],[1122,2],[1127,2],[1137,3],[1144,5],[1158,3],[1170,4],[1188,3],[1192,4],[1206,3],[1222,3],[1226,5],[1236,3],[1242,3],[1252,12],[1271,5],[1281,4],[1288,3],[1292,12],[1322,3],[1333,7],[1347,4],[1359,4],[1364,2],[1367,6],[1374,3],[1378,3],[1384,10],[1395,6],[1402,6],[1409,11],[1421,8],[1433,9],[1433,6],[1440,2],[1445,5],[1454,5],[1475,3],[1479,9],[1489,9],[1502,3],[1512,4],[1518,5],[1524,9],[1552,5],[1577,3],[1582,2],[1595,4],[1603,7],[1612,5],[1620,4],[1627,7],[1636,5],[1644,5],[1652,7],[1661,3],[1667,3],[1680,3],[1687,5],[1701,3],[1713,4],[1731,3],[1735,4],[1749,3],[1765,3],[1769,5],[1779,3],[1785,3],[1795,12],[1814,5],[1824,4],[1831,3],[1835,12],[1858,3],[1862,3],[1866,3],[1872,10],[1883,6],[1890,6],[1897,11],[1909,8],[1921,9],[1921,6],[1928,2],[1933,5],[1942,5],[1956,3],[1975,3],[1980,6],[1989,2],[1997,4],[2007,2],[2018,4],[2023,2],[2028,2],[2050,19],[2072,2],[2075,15],[2093,2],[2104,8],[2116,2],[2128,5],[2139,2],[2149,8],[2184,10],[2197,5],[2208,3],[2220,14],[2250,7],[2260,20],[2283,5],[2289,20],[2312,5],[2344,3],[2348,9],[2360,3],[2370,4],[2376,5],[2403,3],[2408,2],[2421,4],[2429,7],[2438,5],[2446,4],[2453,7],[2462,3],[2468,3],[2488,5],[2506,3],[2510,9],[2520,9],[2533,3],[2543,4],[2549,5],[2555,9],[2583,5],[2608,3],[2613,2],[2626,4],[2634,7],[2643,5],[2651,4],[2658,7],[2667,5],[2675,5],[2683,7],[2692,3],[2698,3],[2719,5],[2725,4],[2744,3],[2748,9],[2758,5],[2764,4],[2769,9],[2782,3],[2792,4],[2798,5],[2804,9],[2829,4],[2834,5],[2842,4],[2855,3],[2860,2],[2873,4],[2881,7],[2890,5],[2898,4],[2905,7],[2914,4],[2921,4],[2928,7],[2937,3],[2943,3],[2958,3],[2967,3],[2971,2],[2976,3],[2980,2],[2985,7],[2994,2],[2999,2],[3009,3],[3016,5],[3030,3],[3042,4],[3060,3],[3064,4],[3078,3],[3094,3],[3098,5],[3108,3],[3114,3],[3124,12],[3143,5],[3153,4],[3160,3],[3164,12],[3194,3],[3198,3],[3202,3],[3208,10],[3219,6],[3226,6],[3233,11],[3245,8],[3257,9],[3257,6],[3264,2],[3269,5],[3278,5],[3299,3],[3303,9],[3313,9],[3326,3],[3336,4],[3342,5],[3348,9],[3376,5],[3401,3],[3406,2],[3419,4],[3427,7],[3436,5],[3444,4],[3451,7],[3460,5],[3468,5],[3476,7],[3485,3],[3491,3],[3504,3],[3511,5],[3525,3],[3537,4],[3555,3],[3559,4],[3573,3],[3589,3],[3593,5],[3603,3],[3609,3],[3619,12],[3638,5],[3648,4],[3655,3],[3659,12],[3678,8],[3703,3],[3707,3],[3711,3],[3717,10],[3728,6],[3735,6],[3742,11],[3754,8],[3766,9],[3766,6],[3773,2],[3778,5],[3787,5],[3801,3],[3820,3],[3825,6],[3834,2],[3842,4],[3855,6],[3874,19],[3896,7],[3904,15],[3922,7],[3938,8],[3950,6],[3966,5],[3992,10],[4005,5],[4016,3],[4028,14],[4058,7],[4068,20],[4091,5],[4097,20],[4120,5],[4152,3],[4156,9],[4168,3],[4178,4],[4184,5],[4211,3],[4216,2],[4229,4],[4237,7],[4246,5],[4254,4],[4261,7],[4270,3],[4276,3],[4296,5],[4314,3],[4318,9],[4328,9],[4341,3],[4351,4],[4357,5],[4363,9],[4391,5],[4416,3],[4421,2],[4434,4],[4442,7],[4451,5],[4459,4],[4466,7],[4475,5],[4483,5],[4491,7],[4500,3],[4506,3],[4527,5],[4533,4],[4552,3],[4556,9],[4566,5],[4572,4],[4577,9],[4590,3],[4600,4],[4606,5],[4612,9],[4637,4],[4642,5],[4650,4],[4663,3],[4668,2],[4681,4],[4689,7],[4698,5],[4706,4],[4713,7],[4722,4],[4729,4],[4736,7],[4745,3],[4751,3],[4766,3],[4775,3],[4779,2],[4784,3],[4788,2],[4793,7],[4802,2],[4807,2],[4817,3],[4824,5],[4838,3],[4850,4],[4868,3],[4872,4],[4886,3],[4902,3],[4906,5],[4916,3],[4922,3],[4932,12],[4951,5],[4961,4],[4968,3],[4972,12],[5002,3],[5006,3],[5010,3],[5016,10],[5027,6],[5034,6],[5041,11],[5053,8],[5065,9],[5065,6],[5072,2],[5077,5],[5086,5],[5102,3],[5107,6],[5116,2],[5124,4],[5137,6],[5156,19],[5178,7],[5186,15],[5204,7],[5226,3],[5230,9],[5240,9],[5253,3],[5263,4],[5269,5],[5275,9],[5303,5],[5328,3],[5333,2],[5346,4],[5354,7],[5363,5],[5371,4],[5378,7],[5387,5],[5395,5],[5403,7],[5412,3],[5418,3],[5431,3],[5438,5],[5452,3],[5464,4],[5482,3],[5486,4],[5500,3],[5516,3],[5520,5],[5530,3],[5536,3],[5546,12],[5565,5],[5575,4],[5582,3],[5586,12],[5606,6],[5613,5],[5619,3],[5623,6],[5632,6],[5639,11],[5652,9],[5652,6],[5659,2],[5665,5],[5679,3],[5685,5],[5691,3],[5695,16],[5714,3],[5718,16],[5741,3],[5760,3],[5765,6],[5774,2],[5782,4],[5792,3],[5823,16],[5840,22],[5863,3],[5867,8],[5878,16],[5895,18],[5914,3],[5918,8],[5937,8],[5950,4],[5955,16],[5972,11],[5984,4],[5996,3],[6008,16],[6025,14],[6056,5],[6062,3],[6066,20],[6089,3],[6093,16],[6110,20],[6134,20],[6155,23],[6179,5],[6187,20],[6208,23],[6232,5],[6240,16],[6257,10],[6268,20],[6307,3],[6311,5],[6317,3],[6321,3],[6327,10],[6338,6],[6345,6],[6353,16],[6374,16],[6416,3],[6420,17],[6439,5],[6446,3],[6459,5],[6466,5],[6493,3],[6498,2],[6511,4],[6519,6],[6526,3],[6530,7],[6539,5],[6551,5],[6559,6],[6566,3],[6570,7],[6579,3],[6589,3],[6611,5],[6629,3],[6633,17],[6651,9],[6661,5],[6669,5],[6676,3],[6689,5],[6696,5],[6702,9],[6730,5],[6755,3],[6760,2],[6773,4],[6781,6],[6788,3],[6792,7],[6801,5],[6813,5],[6821,6],[6828,3],[6832,7],[6841,5],[6847,8],[6864,5],[6870,8],[6883,6],[6890,3],[6894,7],[6903,3],[6913,3],[6936,5],[6942,4],[6961,3],[6965,17],[6983,5],[6989,4],[6994,9],[7006,5],[7013,3],[7026,5],[7033,5],[7039,9],[7064,4],[7069,5],[7077,4],[7090,3],[7095,2],[7108,4],[7116,6],[7123,3],[7127,7],[7136,5],[7148,5],[7156,6],[7163,3],[7167,7],[7176,5],[7182,7],[7198,5],[7204,7],[7216,6],[7223,3],[7227,7],[7236,3],[7246,3],[7263,3],[7272,5],[7278,3],[7282,2],[7287,3],[7291,5],[7300,6],[7307,3],[7311,7],[7320,2],[7329,2],[7339,3],[7346,13],[7368,3],[7380,4],[7398,12],[7417,5],[7427,4],[7434,3],[7438,13],[7458,3],[7462,12],[7488,3],[7504,3],[7508,5],[7518,3],[7524,3],[7531,3],[7535,12],[7566,6],[7573,5],[7579,3],[7583,6],[7592,6],[7599,11],[7612,9],[7612,6],[7619,2],[7625,5],[7639,3],[7643,5],[7649,3],[7653,3],[7659,10],[7670,6],[7677,6],[7688,16],[7731,3],[7735,17],[7753,9],[7763,5],[7771,5],[7778,3],[7791,5],[7798,5],[7804,9],[7832,5],[7857,3],[7862,2],[7875,4],[7883,6],[7890,3],[7894,7],[7903,5],[7915,5],[7923,6],[7930,3],[7934,7],[7943,5],[7949,8],[7966,5],[7972,8],[7985,6],[7992,3],[7996,7],[8005,3],[8015,3],[8030,3],[8037,13],[8059,3],[8071,4],[8086,3],[8090,13],[8110,3],[8114,12],[8140,3],[8156,3],[8160,5],[8170,3],[8176,3],[8183,3],[8187,12],[8208,6],[8215,5],[8221,3],[8225,6],[8234,6],[8241,11],[8254,9],[8254,6],[8261,2],[8267,5],[8281,3],[8287,5],[8293,3],[8297,16],[8316,3],[8320,16],[8343,3],[8362,3],[8367,6],[8376,2],[8384,4],[8394,3],[8425,16],[8442,22],[8465,3],[8469,8],[8480,16],[8497,18],[8516,3],[8520,8],[8539,8],[8552,4],[8557,16],[8574,11],[8586,4],[8598,3],[8610,16],[8627,14],[8658,5],[8664,3],[8668,20],[8691,3],[8695,16],[8712,20],[8736,20],[8757,23],[8781,5],[8789,20],[8810,23],[8834,5],[8842,16],[8859,10],[8870,20],[8909,3],[8913,5],[8919,3],[8923,3],[8929,10],[8940,6],[8947,6],[8955,16],[8976,16],[9018,3],[9022,14],[9038,5],[9045,3],[9058,5],[9065,5],[9092,3],[9097,2],[9110,4],[9118,6],[9125,3],[9129,7],[9138,5],[9150,5],[9158,6],[9165,3],[9169,7],[9178,3],[9188,3],[9214,3],[9225,3],[9229,5],[9238,11],[9259,8],[9304,6],[9311,17],[9329,15],[9345,4],[9368,5],[9386,3],[9390,14],[9405,9],[9415,5],[9423,5],[9430,3],[9443,5],[9450,5],[9456,9],[9484,5],[9509,3],[9514,2],[9527,4],[9535,6],[9542,3],[9546,7],[9555,5],[9567,5],[9575,6],[9582,3],[9586,7],[9595,5],[9601,8],[9618,5],[9624,8],[9637,6],[9644,3],[9648,7],[9657,3],[9667,3],[9694,6],[9701,17],[9719,15],[9735,4],[9759,5],[9765,4],[9784,3],[9788,14],[9803,5],[9809,4],[9814,9],[9826,5],[9833,3],[9846,5],[9853,5],[9859,9],[9884,4],[9889,5],[9897,4],[9910,3],[9915,2],[9928,4],[9936,6],[9943,3],[9947,7],[9956,5],[9968,5],[9976,6],[9983,3],[9987,7],[9996,5],[10002,7],[10018,5],[10024,7],[10036,6],[10043,3],[10047,7],[10056,3],[10066,3],[10093,6],[10100,17],[10118,15],[10134,4],[10152,3],[10177,3],[10181,10],[10194,10],[10205,2],[10221,6],[10228,3],[10232,7],[10241,2],[10250,2],[10264,3],[10271,10],[10290,3],[10302,4],[10333,3],[10337,10],[10354,3],[10358,8],[10379,17],[10400,3],[10416,3],[10420,5],[10430,3],[10436,3],[10443,3],[10447,8],[10458,12],[10472,4],[10478,9],[10494,6],[10501,3],[10505,7],[10514,3],[10526,6],[10533,3],[10537,7],[10546,9],[10561,9],[10592,6],[10599,5],[10605,3],[10609,6],[10618,6],[10625,11],[10638,9],[10638,6],[10645,2],[10651,5],[10665,3],[10669,5],[10675,3],[10679,3],[10685,10],[10696,6],[10703,6],[10724,3],[10728,14],[10743,9],[10753,5],[10761,5],[10768,3],[10781,5],[10788,5],[10794,9],[10822,5],[10847,3],[10852,2],[10865,4],[10873,6],[10880,3],[10884,7],[10893,5],[10905,5],[10913,6],[10920,3],[10924,7],[10933,5],[10939,8],[10956,5],[10962,8],[10975,6],[10982,3],[10986,7],[10995,3],[11005,3],[11052,3],[11063,3],[11067,5],[11076,11],[11097,8],[11121,6],[11128,17],[11146,15],[11162,4],[11178,3],[11185,10],[11204,3],[11216,4],[11234,3],[11238,8],[11259,17],[11280,3],[11296,3],[11300,5],[11310,3],[11316,3],[11323,3],[11327,10],[11340,11],[11352,4],[11360,3],[11364,8],[11376,12],[11390,4],[11396,9],[11412,6],[11419,3],[11423,7],[11432,3],[11444,6],[11451,3],[11455,7],[11464,9],[11479,9]]},"89":{"position":[[12,3],[25,3],[45,10],[58,13],[87,3],[94,6],[101,4],[106,4],[111,5],[124,6],[149,3],[153,3],[157,3],[163,10],[174,6],[181,6],[188,11],[200,8],[212,9],[212,6],[219,2],[224,5],[233,5],[265,3],[269,3],[273,3],[279,15],[295,6],[310,3],[317,3],[321,8],[332,3],[336,9],[346,3],[351,8],[360,7],[370,7],[379,5],[387,2],[399,6],[406,5],[412,3],[416,6],[425,6],[432,11],[445,9],[445,6],[452,2],[458,5],[485,3],[489,5],[495,3],[499,3],[505,10],[516,6],[523,6],[537,3],[541,5],[547,3],[551,3],[557,15],[573,6],[594,5],[600,3],[604,8],[615,3],[619,17],[637,3],[643,3],[648,11],[660,5],[668,8],[680,6],[687,3],[691,7],[700,5],[712,5],[727,6],[734,5],[740,3],[744,6],[753,6],[760,11],[773,9],[773,6],[780,2],[786,5],[813,3],[817,5],[823,3],[827,3],[833,10],[844,6],[851,6],[865,3],[869,5],[875,3],[879,3],[885,15],[901,6],[922,3],[926,14],[941,3],[946,10],[957,8],[971,3],[976,11],[988,5],[996,8],[1008,6],[1015,3],[1019,7],[1028,5],[1040,5]]}}}],["一一列举",{"_index":424,"t":{"59":{"position":[[11,4]]}}}],["一个",{"_index":69,"t":{"8":{"position":[[125,2]]},"12":{"position":[[2,2]]},"16":{"position":[[1014,2],[2134,2],[3322,2]]},"18":{"position":[[21,2]]},"22":{"position":[[848,2],[857,2],[862,2],[2545,2],[2636,2],[2907,2],[3215,2],[3551,2],[3622,2],[4993,2],[5441,2],[5848,2],[6311,2]]},"57":{"position":[[1044,2],[1756,2],[2038,2]]},"59":{"position":[[126,2]]},"61":{"position":[[1801,2],[2442,2]]},"64":{"position":[[125,2]]},"66":{"position":[[9,2]]},"68":{"position":[[25,2],[294,2],[357,2],[1371,2],[1425,2],[2322,2],[2606,2]]},"70":{"position":[[34,2]]},"72":{"position":[[2,2],[25,2]]},"74":{"position":[[18,2],[27,2]]},"84":{"position":[[1029,2],[1065,2],[1826,2],[2110,2]]},"87":{"position":[[56,2],[624,2],[1307,2],[1855,2],[2496,2],[3179,2],[3700,2],[4304,2],[4987,2],[6619,2],[7551,2],[9297,2],[9376,2],[9687,2],[10086,2],[10373,2],[10577,2],[11025,2],[11253,2]]}}}],["一些",{"_index":114,"t":{"10":{"position":[[356,2]]},"16":{"position":[[524,2]]},"22":{"position":[[45,2],[2418,2],[2447,2]]},"41":{"position":[[2147,2]]},"43":{"position":[[6,2]]},"61":{"position":[[359,2],[920,2],[1507,2],[2184,2],[2825,2]]},"68":{"position":[[261,2]]},"78":{"position":[[89,2]]},"89":{"position":[[19,2]]}}}],["一句",{"_index":504,"t":{"74":{"position":[[91,2]]}}}],["一定",{"_index":367,"t":{"41":{"position":[[892,2]]},"59":{"position":[[118,2]]}}}],["一小部分",{"_index":436,"t":{"59":{"position":[[196,4]]}}}],["一样",{"_index":490,"t":{"72":{"position":[[19,2]]}}}],["一种",{"_index":96,"t":{"10":{"position":[[219,2]]}}}],["一致",{"_index":600,"t":{"89":{"position":[[139,2]]}}}],["三个",{"_index":37,"t":{"4":{"position":[[22,2]]}}}],["上传",{"_index":230,"t":{"22":{"position":[[2553,2],[2634,2],[2653,2],[2905,2],[2924,2],[3213,2],[3232,2],[5352,2]]}}}],["上述",{"_index":106,"t":{"10":{"position":[[313,2]]},"22":{"position":[[2416,2]]}}}],["上限",{"_index":355,"t":{"41":{"position":[[769,2]]}}}],["下文",{"_index":3,"t":{"2":{"position":[[19,2],[44,2]]},"57":{"position":[[357,2],[709,2],[888,2]]},"59":{"position":[[191,2]]},"84":{"position":[[363,2],[718,2],[900,2]]}}}],["下面",{"_index":139,"t":{"16":{"position":[[64,2]]}}}],["不会",{"_index":386,"t":{"41":{"position":[[1345,2]]},"59":{"position":[[6,2]]}}}],["不再",{"_index":150,"t":{"16":{"position":[[176,2],[3350,2]]}}}],["不同",{"_index":15,"t":{"2":{"position":[[114,2]]},"22":{"position":[[5304,2]]},"87":{"position":[[3852,2],[5134,2]]}}}],["不够",{"_index":587,"t":{"87":{"position":[[2163,2]]}}}],["不得已",{"_index":117,"t":{"10":{"position":[[363,3]]}}}],["不必要",{"_index":234,"t":{"22":{"position":[[2647,3],[2918,3],[3226,3]]}}}],["不是",{"_index":239,"t":{"22":{"position":[[2818,2],[3108,2],[3422,2]]}}}],["不用",{"_index":589,"t":{"87":{"position":[[2178,2]]}}}],["不要",{"_index":530,"t":{"76":{"position":[[40,2]]},"87":{"position":[[9199,2],[11037,2]]}}}],["不足",{"_index":322,"t":{"41":{"position":[[470,2]]}}}],["与其",{"_index":433,"t":{"59":{"position":[[172,2]]}}}],["专属",{"_index":203,"t":{"22":{"position":[[48,2],[2449,2]]}}}],["两个",{"_index":79,"t":{"8":{"position":[[245,2],[290,2]]},"10":{"position":[[315,2]]},"14":{"position":[[54,2]]},"41":{"position":[[1018,2]]},"68":{"position":[[96,2]]}}}],["中",{"_index":33,"t":{"2":{"position":[[245,1]]},"6":{"position":[[96,1]]},"8":{"position":[[105,1]]},"12":{"position":[[40,1]]},"14":{"position":[[12,1],[40,1],[58,1]]},"16":{"position":[[56,1],[169,1],[1008,1],[2128,1],[3314,1]]},"18":{"position":[[1280,1]]},"20":{"position":[[4,1]]},"22":{"position":[[2182,1],[2552,1],[4394,1],[4991,1],[5017,1],[5258,1],[5325,1]]},"32":{"position":[[16,1],[67,1]]},"39":{"position":[[79,1]]},"41":{"position":[[60,1],[394,1],[2065,1]]},"43":{"position":[[3,1]]},"45":{"position":[[189,1]]},"51":{"position":[[2,1]]},"57":{"position":[[795,1]]},"61":{"position":[[1795,1],[2436,1]]},"70":{"position":[[31,1],[253,1]]},"72":{"position":[[222,1]]},"74":{"position":[[1249,1],[1933,1]]},"76":{"position":[[16,1]]},"78":{"position":[[211,1]]},"80":{"position":[[7,1],[83,1]]},"84":{"position":[[804,1]]},"87":{"position":[[230,1],[1239,1],[1342,1],[1782,1],[3111,1],[3606,1],[4919,1],[5533,1],[5814,1],[7521,1],[8173,1],[8416,1],[9209,1],[10433,1],[11047,1],[11313,1]]},"89":{"position":[[4,1]]}}}],["为准",{"_index":484,"t":{"70":{"position":[[139,2]]}}}],["主动",{"_index":257,"t":{"22":{"position":[[5350,2]]},"57":{"position":[[248,2],[601,2]]},"68":{"position":[[1654,2],[1973,2]]},"84":{"position":[[251,2],[607,2]]}}}],["主要",{"_index":38,"t":{"4":{"position":[[24,2]]},"6":{"position":[[76,2],[129,2]]},"8":{"position":[[162,2],[227,2]]},"10":{"position":[[100,2]]}}}],["之一",{"_index":199,"t":{"22":{"position":[[23,2]]}}}],["之前",{"_index":296,"t":{"41":{"position":[[238,2]]}}}],["之后",{"_index":294,"t":{"41":{"position":[[227,2]]}}}],["也好",{"_index":507,"t":{"74":{"position":[[117,2],[159,2],[723,2],[1280,2],[1889,2],[2598,2]]}}}],["了解",{"_index":539,"t":{"78":{"position":[[14,2],[51,2]]}}}],["事件",{"_index":49,"t":{"6":{"position":[[103,2],[148,2]]},"8":{"position":[[68,2],[133,2],[183,2]]},"10":{"position":[[260,2]]},"18":{"position":[[29,2],[38,2],[1278,2]]},"39":{"position":[[38,2]]},"41":{"position":[[399,2],[2055,2]]},"45":{"position":[[154,2]]},"49":{"position":[[67,2]]},"74":{"position":[[29,2],[70,2],[687,2],[1220,2],[1794,2],[2485,2]]},"82":{"position":[[67,2],[134,2]]},"87":{"position":[[466,2],[523,2],[546,2],[612,2],[631,2],[704,2],[727,2],[751,2],[842,2],[869,2],[953,2],[998,2],[1472,2],[1545,2],[1568,2],[1592,2],[2338,2],[2395,2],[2418,2],[2484,2],[2503,2],[2576,2],[2599,2],[2623,2],[2714,2],[2741,2],[2825,2],[2870,2],[3296,2],[3369,2],[3392,2],[3416,2],[4146,2],[4203,2],[4226,2],[4292,2],[4311,2],[4384,2],[4407,2],[4431,2],[4522,2],[4549,2],[4633,2],[4678,2],[5223,2],[5296,2],[5319,2],[5343,2],[6410,2],[6485,2],[6508,2],[6607,2],[6626,2],[6723,2],[6746,2],[6770,2],[6931,2],[6958,2],[7060,2],[7105,2],[7728,2],[7825,2],[7848,2],[7872,2],[9012,2],[9084,2],[9107,2],[9364,2],[9383,2],[9477,2],[9500,2],[9524,2],[9754,2],[9781,2],[9880,2],[9925,2],[10721,2],[10815,2],[10838,2],[10862,2]]}}}],["事情",{"_index":554,"t":{"78":{"position":[[120,2]]}}}],["产生",{"_index":328,"t":{"41":{"position":[[500,2]]}}}],["仅",{"_index":85,"t":{"8":{"position":[[273,1]]},"41":{"position":[[396,1]]}}}],["介绍",{"_index":29,"t":{"2":{"position":[[231,2]]},"64":{"position":[[4,2]]}}}],["仍然",{"_index":321,"t":{"41":{"position":[[468,2]]}}}],["代码",{"_index":267,"t":{"32":{"position":[[108,2]]},"74":{"position":[[7,2]]}}}],["代表",{"_index":273,"t":{"37":{"position":[[19,2]]},"74":{"position":[[698,2],[1231,2],[1805,2],[2496,2]]}}}],["以及",{"_index":265,"t":{"32":{"position":[[23,2]]},"39":{"position":[[25,2]]},"87":{"position":[[451,2],[2323,2],[4131,2],[6294,2],[8896,2]]}}}],["以外",{"_index":219,"t":{"22":{"position":[[2434,2]]}}}],["任何",{"_index":590,"t":{"87":{"position":[[9202,2],[9255,2],[11040,2],[11093,2]]}}}],["任务",{"_index":593,"t":{"87":{"position":[[9292,2],[9682,2],[10081,2],[11020,2]]}}}],["会",{"_index":98,"t":{"10":{"position":[[227,1],[300,1]]},"22":{"position":[[28,1]]},"32":{"position":[[3,1]]},"41":{"position":[[277,1],[691,1],[1377,1],[1540,1],[2104,1]]},"57":{"position":[[1766,1],[2048,1]]},"59":{"position":[[143,1],[193,1]]},"61":{"position":[[422,1],[983,1],[1570,1],[2255,1],[2893,1]]},"68":{"position":[[306,1],[2332,1],[2616,1]]},"74":{"position":[[102,1],[1851,1],[2535,1]]},"78":{"position":[[82,1],[126,1],[177,1],[196,1],[225,1]]},"84":{"position":[[1836,1],[2120,1]]},"87":{"position":[[221,1],[723,1],[1163,1],[1199,1],[1564,1],[1706,1],[1742,1],[2015,1],[2595,1],[3035,1],[3071,1],[3388,1],[3530,1],[3566,1],[4403,1],[4843,1],[4879,1],[5315,1],[5457,1],[5493,1],[5805,1],[6742,1],[7373,1],[7477,1],[7844,1],[8064,1],[8129,1],[8407,1],[9496,1],[10295,1],[10369,1],[10834,1],[11209,1],[11249,1]]}}}],["似乎",{"_index":583,"t":{"87":{"position":[[2032,2]]}}}],["但是",{"_index":317,"t":{"41":{"position":[[456,2]]},"87":{"position":[[2159,2]]}}}],["住",{"_index":455,"t":{"68":{"position":[[234,1]]}}}],["体",{"_index":569,"t":{"87":{"position":[[525,1],[706,1],[955,1],[1547,1],[2397,1],[2578,1],[2827,1],[3371,1],[4205,1],[4386,1],[4635,1],[5298,1],[6487,1],[6725,1],[7062,1],[7827,1],[9086,1],[9208,1],[9479,1],[9882,1],[10817,1],[11046,1]]}}}],["体现",{"_index":76,"t":{"8":{"position":[[229,2]]},"10":{"position":[[102,2]]}}}],["作为",{"_index":43,"t":{"6":{"position":[[48,2]]},"8":{"position":[[48,2],[297,2]]},"10":{"position":[[87,2]]},"12":{"position":[[0,2]]},"16":{"position":[[3339,2]]},"22":{"position":[[9,2],[2517,2],[2575,2],[3638,2],[5278,2]]},"45":{"position":[[55,2],[138,2]]},"47":{"position":[[45,2]]},"49":{"position":[[51,2]]},"55":{"position":[[45,2],[104,2]]},"74":{"position":[[1839,2],[2523,2]]},"82":{"position":[[51,2],[121,2]]}}}],["作用",{"_index":46,"t":{"6":{"position":[[78,2]]},"41":{"position":[[2174,2]]}}}],["作用域",{"_index":422,"t":{"57":{"position":[[1794,3],[1824,3],[2076,3],[2106,3]]},"68":{"position":[[2360,3],[2390,3],[2644,3],[2674,3]]},"84":{"position":[[1864,3],[1894,3],[2148,3],[2178,3]]}}}],["你好",{"_index":505,"t":{"74":{"position":[[94,2],[136,2],[155,2],[501,2],[1034,2],[1592,2],[2296,2]]}}}],["使用",{"_index":42,"t":{"6":{"position":[[40,2]]},"8":{"position":[[40,2],[310,2]]},"10":{"position":[[381,2]]},"16":{"position":[[283,2],[1077,2],[1661,2],[2197,2],[2781,2]]},"18":{"position":[[11,2]]},"22":{"position":[[5434,2],[5841,2],[6304,2]]},"32":{"position":[[72,2],[82,2],[106,2]]},"39":{"position":[[134,2]]},"41":{"position":[[1059,2],[1380,2]]},"43":{"position":[[8,2]]},"45":{"position":[[4,2],[47,2],[81,2],[130,2],[175,2],[195,2]]},"47":{"position":[[37,2]]},"49":{"position":[[43,2]]},"55":{"position":[[37,2],[101,2]]},"57":{"position":[[79,2],[191,2],[205,2],[395,2],[544,2],[558,2],[796,2],[811,2],[1042,2],[1127,2],[1223,2],[1239,2],[1783,2],[1895,2],[2065,2]]},"61":{"position":[[118,2],[680,2],[1262,2],[1864,2],[2505,2]]},"64":{"position":[[6,2]]},"68":{"position":[[240,2],[355,2],[1369,2],[1555,2],[1631,2],[1668,2],[1770,2],[1786,2],[1875,2],[1950,2],[1987,2],[2088,2],[2104,2],[2349,2],[2463,2],[2633,2]]},"70":{"position":[[151,2],[337,2],[345,2],[495,2],[503,2]]},"74":{"position":[[1965,2]]},"80":{"position":[[16,2],[50,2],[87,2]]},"82":{"position":[[43,2],[118,2]]},"84":{"position":[[82,2],[194,2],[208,2],[401,2],[550,2],[564,2],[805,2],[820,2],[1027,2],[1198,2],[1296,2],[1312,2],[1853,2],[1967,2],[2137,2]]},"87":{"position":[[195,2],[1994,2],[3839,2],[5121,2],[5779,2],[8381,2]]},"89":{"position":[[134,2]]}}}],["使用手册",{"_index":550,"t":{"78":{"position":[[108,4]]}}}],["例",{"_index":152,"t":{"16":{"position":[[208,1],[1155,1],[2275,1]]},"57":{"position":[[1120,1],[1320,1],[1619,1]]},"61":{"position":[[23,1],[1218,1],[1942,1],[2583,1]]},"68":{"position":[[1548,1],[1868,1],[2185,1]]},"84":{"position":[[1191,1],[1393,1],[1689,1]]},"87":{"position":[[3692,1]]},"89":{"position":[[91,1]]}}}],["例如",{"_index":93,"t":{"10":{"position":[[162,2],[257,2]]},"41":{"position":[[1396,2]]},"57":{"position":[[1066,2]]},"68":{"position":[[276,2],[1497,2]]},"84":{"position":[[1137,2]]},"87":{"position":[[167,2],[1214,2],[1757,2],[1966,2],[3086,2],[3581,2],[3811,2],[4894,2],[5508,2],[5751,2],[7496,2],[8148,2],[8353,2],[9222,2],[10408,2],[11060,2],[11288,2]]}}}],["依旧",{"_index":118,"t":{"10":{"position":[[373,2]]},"41":{"position":[[440,2]]}}}],["依赖",{"_index":62,"t":{"6":{"position":[[158,2]]},"8":{"position":[[84,2],[198,2],[252,2],[276,2],[284,2],[307,2]]},"10":{"position":[[111,2]]},"55":{"position":[[82,2]]},"57":{"position":[[15,2],[107,2],[241,2],[258,2],[423,2],[594,2],[611,2],[1007,2],[1760,2],[2042,2]]},"68":{"position":[[87,2],[103,2],[1334,2],[2326,2],[2610,2]]},"74":{"position":[[1931,2]]},"82":{"position":[[99,2],[153,2]]},"84":{"position":[[18,2],[110,2],[244,2],[261,2],[429,2],[600,2],[617,2],[992,2],[1830,2],[2114,2]]},"87":{"position":[[2016,2]]}}}],["便",{"_index":191,"t":{"18":{"position":[[43,1],[1285,1]]}}}],["便捷",{"_index":103,"t":{"10":{"position":[[267,2]]},"89":{"position":[[29,2]]}}}],["便是",{"_index":194,"t":{"18":{"position":[[1268,2]]}}}],["保",{"_index":465,"t":{"68":{"position":[[368,1]]}}}],["保持",{"_index":454,"t":{"68":{"position":[[232,2],[268,2]]}}}],["保证",{"_index":314,"t":{"41":{"position":[[444,2]]},"78":{"position":[[129,2],[147,2]]}}}],["信息",{"_index":146,"t":{"16":{"position":[[156,2],[393,2],[1265,2],[2385,2]]},"39":{"position":[[53,2]]},"41":{"position":[[100,2],[614,2],[1323,2],[1386,2]]},"61":{"position":[[228,2],[789,2],[1376,2],[2052,2],[2693,2]]},"87":{"position":[[1092,2],[2964,2],[4772,2],[7269,2],[10158,2]]}}}],["修改",{"_index":485,"t":{"70":{"position":[[227,2]]}}}],["借助",{"_index":99,"t":{"10":{"position":[[228,2]]},"68":{"position":[[64,2]]}}}],["值",{"_index":572,"t":{"87":{"position":[[861,1],[2733,1],[4541,1],[6950,1],[9773,1]]}}}],["假设",{"_index":501,"t":{"74":{"position":[[74,2]]},"87":{"position":[[9286,2],[9676,2],[10075,2],[11014,2]]}}}],["做",{"_index":247,"t":{"22":{"position":[[3764,1],[3772,1],[3970,1],[4239,1]]},"59":{"position":[[21,1],[204,1]]}}}],["做到",{"_index":241,"t":{"22":{"position":[[3545,2]]}}}],["像",{"_index":489,"t":{"72":{"position":[[0,1]]}}}],["允许",{"_index":408,"t":{"57":{"position":[[101,2],[417,2]]},"84":{"position":[[104,2],[423,2]]}}}],["元素",{"_index":201,"t":{"22":{"position":[[34,2],[53,2],[70,2],[5282,2]]}}}],["先",{"_index":566,"t":{"80":{"position":[[12,1]]}}}],["免除",{"_index":598,"t":{"89":{"position":[[34,2]]}}}],["全面",{"_index":221,"t":{"22":{"position":[[2460,2]]},"78":{"position":[[204,2]]}}}],["全面性",{"_index":556,"t":{"78":{"position":[[139,3]]}}}],["关系",{"_index":75,"t":{"8":{"position":[[225,2]]},"59":{"position":[[187,2]]}}}],["关闭",{"_index":292,"t":{"41":{"position":[[201,2],[388,2]]},"87":{"position":[[1211,2],[1246,2],[1754,2],[1789,2],[3083,2],[3118,2],[3578,2],[3613,2],[4891,2],[4926,2],[5505,2],[5540,2],[7493,2],[7528,2],[8145,2],[8180,2],[10405,2],[10440,2],[11285,2],[11320,2]]}}}],["兴趣",{"_index":300,"t":{"41":{"position":[[255,2]]}}}],["其中",{"_index":193,"t":{"18":{"position":[[1256,2]]}}}],["其他",{"_index":172,"t":{"16":{"position":[[616,2],[1445,2],[2565,2]]},"18":{"position":[[1281,2]]},"22":{"position":[[3782,2]]},"41":{"position":[[0,2]]},"70":{"position":[[145,2]]},"80":{"position":[[63,2]]},"87":{"position":[[453,2],[1151,2],[1694,2],[2325,2],[3023,2],[3518,2],[4133,2],[4831,2],[5445,2],[6296,2],[7361,2],[8052,2],[8898,2],[10283,2],[11197,2]]}}}],["其次",{"_index":565,"t":{"78":{"position":[[191,2]]}}}],["具体",{"_index":542,"t":{"78":{"position":[[53,2]]},"87":{"position":[[626,2],[1470,2],[2498,2],[3294,2],[4306,2],[5221,2],[6621,2],[7726,2],[9378,2],[10719,2]]}}}],["具体内容",{"_index":482,"t":{"70":{"position":[[102,4]]}}}],["兼容",{"_index":91,"t":{"10":{"position":[[37,2]]},"22":{"position":[[63,2]]}}}],["内",{"_index":333,"t":{"41":{"position":[[528,1],[1283,1],[1385,1]]}}}],["内容",{"_index":171,"t":{"16":{"position":[[607,2],[1435,2],[1529,2],[1613,2],[1713,2],[2555,2],[2649,2],[2733,2],[2833,2]]},"18":{"position":[[1272,2],[1295,2]]}}}],["内部",{"_index":311,"t":{"41":{"position":[[409,2],[562,2]]}}}],["写",{"_index":377,"t":{"41":{"position":[[927,1]]}}}],["准备",{"_index":183,"t":{"16":{"position":[[3356,2],[3564,2],[3768,2]]},"18":{"position":[[388,2],[809,2]]},"66":{"position":[[5,2]]},"68":{"position":[[3,2],[23,2]]},"87":{"position":[[5604,2],[5677,2],[7564,2],[8206,2],[8279,2],[10590,2]]},"89":{"position":[[397,2],[725,2]]}}}],["准确",{"_index":329,"t":{"41":{"position":[[507,2]]}}}],["准确性",{"_index":316,"t":{"41":{"position":[[451,3]]}}}],["减缓",{"_index":365,"t":{"41":{"position":[[865,2]]}}}],["几个",{"_index":140,"t":{"16":{"position":[[67,2]]}}}],["凭证",{"_index":180,"t":{"16":{"position":[[3344,2]]}}}],["出现",{"_index":255,"t":{"22":{"position":[[5320,2]]},"41":{"position":[[278,2],[542,2]]}}}],["函数",{"_index":400,"t":{"41":{"position":[[2154,2]]},"74":{"position":[[22,2]]},"87":{"position":[[1155,2],[1698,2],[3027,2],[3522,2],[4835,2],[5449,2],[7365,2],[8056,2],[9206,2],[9273,2],[9279,2],[10287,2],[11044,2],[11111,2],[11117,2],[11201,2]]}}}],["分",{"_index":357,"t":{"41":{"position":[[815,1]]}}}],["分为",{"_index":36,"t":{"4":{"position":[[20,2]]}}}],["分别",{"_index":17,"t":{"2":{"position":[[119,2]]},"4":{"position":[[31,2]]},"41":{"position":[[1034,2]]}}}],["分配",{"_index":473,"t":{"68":{"position":[[1656,2],[1975,2]]}}}],["分钟",{"_index":349,"t":{"41":{"position":[[748,2]]}}}],["分页",{"_index":356,"t":{"41":{"position":[[813,2]]}}}],["列表",{"_index":346,"t":{"41":{"position":[[705,2],[710,2]]},"59":{"position":[[134,2]]},"61":{"position":[[19,2]]},"89":{"position":[[85,2],[263,2]]}}}],["创建",{"_index":477,"t":{"70":{"position":[[32,2]]}}}],["判",{"_index":325,"t":{"41":{"position":[[480,1]]}}}],["别的",{"_index":585,"t":{"87":{"position":[[2035,2]]}}}],["前",{"_index":468,"t":{"68":{"position":[[531,1],[646,1],[774,1],[888,1],[1048,1],[1249,1]]}}}],["前后",{"_index":511,"t":{"74":{"position":[[597,2],[615,2],[1131,2],[1149,2],[1689,2],[1707,2],[2393,2],[2411,2]]}}}],["前往",{"_index":418,"t":{"57":{"position":[[964,2],[1010,2]]},"68":{"position":[[44,2],[1337,2]]},"76":{"position":[[62,2]]},"78":{"position":[[0,2],[31,2],[60,2]]},"84":{"position":[[995,2]]}}}],["前缀",{"_index":229,"t":{"22":{"position":[[2521,2]]}}}],["前言",{"_index":405,"t":{"45":{"position":[[208,2]]},"53":{"position":[[0,2]]}}}],["剩余",{"_index":509,"t":{"74":{"position":[[585,2],[1119,2],[1677,2],[2381,2]]}}}],["功能",{"_index":102,"t":{"10":{"position":[[254,2]]},"22":{"position":[[5004,2]]},"78":{"position":[[56,2]]}}}],["功能性",{"_index":54,"t":{"6":{"position":[[122,3]]}}}],["加入",{"_index":438,"t":{"61":{"position":[[13,2]]}}}],["加粗",{"_index":248,"t":{"22":{"position":[[3894,2],[4163,2]]}}}],["加载",{"_index":421,"t":{"57":{"position":[[1776,2],[2058,2]]},"68":{"position":[[2342,2],[2626,2]]},"84":{"position":[[1846,2],[2130,2]]},"87":{"position":[[226,2],[5810,2],[8412,2]]}}}],["包",{"_index":136,"t":{"16":{"position":[[17,1]]},"59":{"position":[[40,1]]}}}],["包括",{"_index":256,"t":{"22":{"position":[[5328,2]]}}}],["包装",{"_index":430,"t":{"59":{"position":[[109,2]]}}}],["匹配",{"_index":260,"t":{"22":{"position":[[5462,2],[5869,2],[6332,2]]},"74":{"position":[[563,2],[608,2],[1097,2],[1142,2],[1655,2],[1700,2],[2359,2],[2404,2]]},"87":{"position":[[720,2],[866,2],[977,2],[1561,2],[2592,2],[2738,2],[2849,2],[3385,2],[4400,2],[4546,2],[4657,2],[5312,2],[6739,2],[6955,2],[7084,2],[7841,2],[9493,2],[9778,2],[9904,2],[10831,2]]}}}],["区分",{"_index":472,"t":{"68":{"position":[[1473,2]]},"84":{"position":[[1113,2]]}}}],["单位",{"_index":340,"t":{"41":{"position":[[619,2],[669,2],[849,2],[1977,2]]}}}],["单独",{"_index":406,"t":{"55":{"position":[[99,2]]},"82":{"position":[[116,2]]}}}],["卡片",{"_index":249,"t":{"22":{"position":[[4397,2],[4729,2],[4864,2]]}}}],["即可",{"_index":307,"t":{"41":{"position":[[386,2]]}}}],["压缩",{"_index":286,"t":{"41":{"position":[[30,2]]}}}],["原因",{"_index":330,"t":{"41":{"position":[[512,2]]}}}],["原始",{"_index":192,"t":{"18":{"position":[[251,2]]},"22":{"position":[[3755,2],[3961,2],[4230,2]]},"41":{"position":[[2134,2],[2149,2]]},"87":{"position":[[544,2],[749,2],[996,2],[1590,2],[2416,2],[2621,2],[2868,2],[3414,2],[4224,2],[4429,2],[4676,2],[5341,2],[6506,2],[6768,2],[7103,2],[7870,2],[9105,2],[9522,2],[9923,2],[10860,2]]}}}],["原本",{"_index":388,"t":{"41":{"position":[[1349,2]]}}}],["参数",{"_index":144,"t":{"16":{"position":[[149,2],[532,2]]},"41":{"position":[[72,2]]},"61":{"position":[[367,2],[928,2],[1515,2],[2192,2],[2833,2]]},"74":{"position":[[693,2],[1226,2],[1800,2],[2491,2]]},"87":{"position":[[975,2],[2847,2],[4655,2],[7082,2],[9902,2]]}}}],["参考",{"_index":162,"t":{"16":{"position":[[293,2],[420,2],[1087,2],[1292,2],[2207,2],[2412,2]]},"41":{"position":[[45,2],[1198,2],[1254,2],[1669,2],[1790,2],[1923,2]]},"57":{"position":[[355,2],[707,2],[886,2],[958,2]]},"61":{"position":[[128,2],[255,2],[690,2],[816,2],[1272,2],[1403,2],[1874,2],[2079,2],[2515,2],[2720,2]]},"68":{"position":[[166,2],[228,2],[529,2],[534,2],[644,2],[649,2],[772,2],[777,2],[886,2],[891,2],[1046,2],[1051,2],[1247,2],[1252,2],[1486,2]]},"70":{"position":[[107,2]]},"72":{"position":[[253,2]]},"74":{"position":[[1972,2]]},"80":{"position":[[13,2],[65,2],[72,2]]},"84":{"position":[[361,2],[716,2],[898,2],[1126,2]]}}}],["及时",{"_index":335,"t":{"41":{"position":[[547,2]]},"78":{"position":[[201,2]]}}}],["友好",{"_index":20,"t":{"2":{"position":[[182,2]]},"10":{"position":[[42,2]]}}}],["反馈",{"_index":320,"t":{"41":{"position":[[463,2],[549,2]]},"76":{"position":[[46,2],[72,2]]}}}],["发布",{"_index":563,"t":{"78":{"position":[[183,2]]}}}],["发送",{"_index":71,"t":{"8":{"position":[[140,2]]},"10":{"position":[[272,2]]},"12":{"position":[[22,2]]},"16":{"position":[[75,2],[104,2],[135,2],[3043,2]]},"20":{"position":[[10,2]]},"22":{"position":[[401,2],[2465,2],[2579,2],[3549,2],[3642,2],[4386,2],[5284,2],[5330,2]]},"74":{"position":[[107,2]]}}}],["取而代之",{"_index":109,"t":{"10":{"position":[[330,4]]}}}],["变得",{"_index":534,"t":{"76":{"position":[[55,2]]}}}],["只有",{"_index":420,"t":{"57":{"position":[[1754,2],[2036,2]]},"68":{"position":[[2320,2],[2604,2]]},"84":{"position":[[1824,2],[2108,2]]},"87":{"position":[[708,2],[1549,2],[2580,2],[3373,2],[4388,2],[5300,2],[6727,2],[7829,2],[9481,2],[10819,2]]}}}],["可以",{"_index":89,"t":{"8":{"position":[[293,2]]},"10":{"position":[[375,2]]},"16":{"position":[[60,2],[159,2],[3318,2]]},"18":{"position":[[44,2],[1286,2]]},"22":{"position":[[397,2],[838,2],[1969,2],[2641,2],[2714,2],[2912,2],[2994,2],[3220,2],[3308,2],[3543,2],[4601,2],[5430,2],[5837,2],[6300,2]]},"32":{"position":[[100,2]]},"39":{"position":[[62,2]]},"41":{"position":[[258,2],[425,2],[442,2],[554,2],[855,2]]},"55":{"position":[[97,2]]},"57":{"position":[[225,2],[578,2],[1781,2],[2063,2]]},"59":{"position":[[74,2]]},"61":{"position":[[604,2],[1165,2],[1752,2]]},"68":{"position":[[40,2],[351,2],[1768,2],[2086,2],[2347,2],[2461,2],[2631,2]]},"70":{"position":[[343,2],[501,2]]},"72":{"position":[[251,2]]},"74":{"position":[[1970,2]]},"76":{"position":[[60,2]]},"80":{"position":[[10,2],[70,2]]},"82":{"position":[[114,2]]},"84":{"position":[[228,2],[584,2],[1294,2],[1851,2],[1965,2],[2135,2]]},"87":{"position":[[608,2],[838,2],[1082,2],[2045,2],[2176,2],[2480,2],[2710,2],[2954,2],[4288,2],[4518,2],[4762,2],[6603,2],[6927,2],[7259,2],[9360,2],[9750,2],[10148,2]]}}}],["可供使用",{"_index":61,"t":{"6":{"position":[[153,4]]},"8":{"position":[[193,4]]}}}],["可控",{"_index":331,"t":{"41":{"position":[[524,2]]}}}],["可用",{"_index":452,"t":{"66":{"position":[[11,2]]},"87":{"position":[[1344,2]]}}}],["可能",{"_index":82,"t":{"8":{"position":[[267,2]]},"41":{"position":[[487,2],[510,2],[2166,2]]},"68":{"position":[[304,2],[1455,2]]},"78":{"position":[[80,2]]},"84":{"position":[[1095,2]]},"87":{"position":[[231,2],[2161,2],[5815,2],[8417,2]]}}}],["可能性",{"_index":24,"t":{"2":{"position":[[200,3]]}}}],["各个",{"_index":143,"t":{"16":{"position":[[147,2]]}}}],["各种",{"_index":94,"t":{"10":{"position":[[205,2]]}}}],["合适",{"_index":411,"t":{"57":{"position":[[158,2],[490,2],[991,2],[1046,2],[1183,2],[1296,2],[1363,2],[1456,2],[1527,2],[1594,2],[1716,2],[1998,2]]},"68":{"position":[[1318,2],[1373,2],[1611,2],[1728,2],[1843,2],[1931,2],[2047,2],[2161,2],[2282,2],[2566,2]]},"84":{"position":[[161,2],[496,2],[976,2],[1031,2],[1254,2],[1369,2],[1436,2],[1528,2],[1599,2],[1664,2],[1786,2],[2070,2]]},"87":{"position":[[3868,2],[5150,2]]}}}],["同时",{"_index":345,"t":{"41":{"position":[[689,2]]},"78":{"position":[[143,2]]},"87":{"position":[[1355,2]]}}}],["同样",{"_index":73,"t":{"8":{"position":[[166,2]]}}}],["同步",{"_index":289,"t":{"41":{"position":[[103,2],[233,2],[268,2],[414,2],[434,2],[485,2],[538,2],[609,2],[663,2],[686,2],[693,2],[808,2],[819,2]]}}}],["名",{"_index":228,"t":{"22":{"position":[[2520,1]]}}}],["后果",{"_index":327,"t":{"41":{"position":[[492,2]]}}}],["后缀",{"_index":417,"t":{"57":{"position":[[253,2],[606,2],[806,2]]},"68":{"position":[[1660,2],[1979,2]]},"84":{"position":[[256,2],[612,2],[815,2]]}}}],["后面",{"_index":165,"t":{"16":{"position":[[405,2],[1277,2],[2397,2]]},"61":{"position":[[240,2],[801,2],[1388,2],[2064,2],[2705,2]]}}}],["否则",{"_index":459,"t":{"68":{"position":[[300,2]]}}}],["含义",{"_index":264,"t":{"32":{"position":[[21,2]]},"41":{"position":[[1138,2]]}}}],["启动",{"_index":190,"t":{"18":{"position":[[19,2]]},"72":{"position":[[27,2]]},"76":{"position":[[4,2]]},"87":{"position":[[1135,2],[1678,2],[3007,2],[3502,2],[4815,2],[5429,2],[7337,2],[8028,2],[10262,2],[11176,2]]}}}],["启用",{"_index":458,"t":{"68":{"position":[[292,2]]},"72":{"position":[[52,2]]},"87":{"position":[[292,2],[2101,2],[3935,2],[5934,2],[8536,2]]}}}],["周期",{"_index":290,"t":{"41":{"position":[[105,2],[612,2],[666,2]]}}}],["命名",{"_index":431,"t":{"59":{"position":[[113,2],[145,2],[167,2]]}}}],["响应",{"_index":523,"t":{"74":{"position":[[1917,2],[1984,2],[2518,2]]}}}],["哪儿",{"_index":282,"t":{"39":{"position":[[58,2]]}}}],["回复",{"_index":506,"t":{"74":{"position":[[113,2]]},"78":{"position":[[207,2]]}}}],["因为",{"_index":461,"t":{"68":{"position":[[313,2]]},"87":{"position":[[2026,2]]}}}],["因此",{"_index":133,"t":{"14":{"position":[[32,2]]},"41":{"position":[[419,2],[497,2],[516,2]]},"57":{"position":[[222,2],[575,2],[1779,2],[2061,2]]},"68":{"position":[[2345,2],[2629,2]]},"84":{"position":[[225,2],[581,2],[1849,2],[2133,2]]},"87":{"position":[[2041,2],[2168,2]]}}}],["固定值",{"_index":271,"t":{"37":{"position":[[0,3]]}}}],["图片",{"_index":209,"t":{"22":{"position":[[392,2],[403,2],[2725,2],[3005,2],[3319,2]]}}}],["在线",{"_index":251,"t":{"22":{"position":[[4999,2]]}}}],["地址",{"_index":434,"t":{"59":{"position":[[182,2]]}}}],["地方",{"_index":499,"t":{"74":{"position":[[12,2]]}}}],["场景",{"_index":116,"t":{"10":{"position":[[360,2]]},"32":{"position":[[29,2]]},"41":{"position":[[1056,2]]}}}],["基于",{"_index":8,"t":{"2":{"position":[[68,2],[121,2],[186,2]]},"6":{"position":[[8,2]]},"8":{"position":[[8,2]]},"10":{"position":[[8,2]]},"41":{"position":[[1302,2]]},"45":{"position":[[15,2],[98,2]]},"47":{"position":[[5,2]]},"49":{"position":[[11,2]]},"55":{"position":[[5,2]]},"64":{"position":[[127,2]]},"82":{"position":[[11,2]]}}}],["基本",{"_index":394,"t":{"41":{"position":[[2115,2]]}}}],["基本功能",{"_index":25,"t":{"2":{"position":[[205,4],[226,4]]}}}],["处理",{"_index":126,"t":{"12":{"position":[[19,2]]},"14":{"position":[[45,2]]},"18":{"position":[[1291,2]]},"22":{"position":[[3773,2],[3971,2],[4240,2]]},"74":{"position":[[1859,2],[2543,2]]},"87":{"position":[[10172,2],[10328,2]]}}}],["处理器",{"_index":390,"t":{"41":{"position":[[2057,3]]},"87":{"position":[[468,3],[729,3],[1570,3],[2340,3],[2601,3],[3394,3],[4148,3],[4409,3],[5321,3],[6412,3],[6748,3],[7850,3],[9014,3],[9502,3],[10840,3]]}}}],["处理结果",{"_index":526,"t":{"74":{"position":[[1988,4]]}}}],["备注",{"_index":396,"t":{"41":{"position":[[2121,2]]}}}],["外",{"_index":529,"t":{"76":{"position":[[35,1]]}}}],["多",{"_index":23,"t":{"2":{"position":[[196,1]]},"22":{"position":[[93,1]]},"32":{"position":[[46,1]]},"41":{"position":[[530,1],[1197,1],[1253,1],[1668,1],[1789,1],[1922,1]]},"57":{"position":[[193,1],[546,1]]},"59":{"position":[[1,1]]},"84":{"position":[[196,1],[552,1]]}}}],["多媒体",{"_index":253,"t":{"22":{"position":[[5260,3]]}}}],["多次",{"_index":235,"t":{"22":{"position":[[2651,2],[2922,2],[3230,2]]}}}],["大",{"_index":363,"t":{"41":{"position":[[860,1],[2172,1]]},"74":{"position":[[592,1],[1126,1],[1684,1],[2388,1]]}}}],["大于",{"_index":342,"t":{"41":{"position":[[674,2]]}}}],["大部分",{"_index":167,"t":{"16":{"position":[[516,3]]},"59":{"position":[[169,3]]},"61":{"position":[[351,3],[912,3],[1499,3],[2176,3],[2817,3]]}}}],["大量",{"_index":101,"t":{"10":{"position":[[250,2]]}}}],["太",{"_index":402,"t":{"41":{"position":[[2171,1]]},"59":{"position":[[0,1],[27,1]]}}}],["失败",{"_index":444,"t":{"61":{"position":[[452,2],[1013,2],[1600,2],[2285,2],[2923,2]]}}}],["如何",{"_index":134,"t":{"14":{"position":[[48,2],[61,2]]}}}],["如果",{"_index":238,"t":{"22":{"position":[[2816,2],[3106,2],[3420,2]]},"41":{"position":[[251,2],[495,2],[1358,2],[1494,2],[2124,2]]},"57":{"position":[[188,2],[202,2],[541,2],[555,2],[1201,2],[1752,2],[1807,2],[1873,2],[2034,2],[2089,2]]},"68":{"position":[[1627,2],[1746,2],[1946,2],[2064,2],[2318,2],[2373,2],[2439,2],[2602,2],[2657,2]]},"70":{"position":[[142,2],[223,2],[334,2],[492,2]]},"72":{"position":[[214,2]]},"74":{"position":[[1904,2]]},"76":{"position":[[28,2]]},"84":{"position":[[191,2],[205,2],[547,2],[561,2],[1272,2],[1822,2],[1877,2],[1943,2],[2106,2],[2161,2]]},"87":{"position":[[2170,2],[6396,2],[7710,2],[8998,2],[10164,2],[10320,2]]}}}],["始终",{"_index":559,"t":{"78":{"position":[[157,2]]}}}],["子",{"_index":500,"t":{"74":{"position":[[64,1]]}}}],["字符串",{"_index":246,"t":{"22":{"position":[[3757,3]]},"87":{"position":[[553,3],[758,3],[1005,3],[1599,3],[2425,3],[2630,3],[2877,3],[3423,3],[4233,3],[4438,3],[4685,3],[5350,3],[6515,3],[6777,3],[7112,3],[7879,3],[9114,3],[9531,3],[9932,3],[10869,3]]}}}],["存在",{"_index":83,"t":{"8":{"position":[[269,2]]},"59":{"position":[[116,2]]},"74":{"position":[[595,2],[1129,2],[1687,2],[1936,2],[2391,2]]},"87":{"position":[[233,2],[5817,2],[8419,2]]}}}],["它们",{"_index":39,"t":{"4":{"position":[[29,2]]},"8":{"position":[[288,2]]},"16":{"position":[[144,2]]},"41":{"position":[[1032,2],[1088,2]]},"59":{"position":[[164,2]]}}}],["安装",{"_index":407,"t":{"57":{"position":[[3,2],[989,2]]},"68":{"position":[[1316,2]]},"84":{"position":[[3,2],[974,2]]}}}],["完全",{"_index":90,"t":{"8":{"position":[[295,2]]},"22":{"position":[[3553,2]]},"41":{"position":[[428,2],[477,2]]}}}],["完善",{"_index":337,"t":{"41":{"position":[[560,2]]},"78":{"position":[[228,2]]}}}],["完整",{"_index":269,"t":{"34":{"position":[[0,2]]},"41":{"position":[[1390,2]]},"78":{"position":[[167,2]]}}}],["宗旨",{"_index":55,"t":{"6":{"position":[[131,2]]},"8":{"position":[[164,2]]}}}],["官",{"_index":31,"t":{"2":{"position":[[242,1]]},"78":{"position":[[10,1]]},"80":{"position":[[81,1]]}}}],["官方",{"_index":131,"t":{"14":{"position":[[21,2],[34,2]]}}}],["定义",{"_index":92,"t":{"10":{"position":[[131,2]]}}}],["定时",{"_index":303,"t":{"41":{"position":[[266,2],[432,2],[483,2],[536,2]]}}}],["实例",{"_index":381,"t":{"41":{"position":[[1074,2]]}}}],["实现",{"_index":12,"t":{"2":{"position":[[92,2]]},"8":{"position":[[119,2]]},"10":{"position":[[79,2],[114,2],[159,2],[164,2]]},"14":{"position":[[29,2]]},"22":{"position":[[2482,2]]},"68":{"position":[[364,2],[1480,2]]},"84":{"position":[[1120,2]]}}}],["实用性",{"_index":548,"t":{"78":{"position":[[91,3]]}}}],["实质",{"_index":78,"t":{"8":{"position":[[241,2]]},"55":{"position":[[77,2]]},"82":{"position":[[94,2]]}}}],["实际",{"_index":259,"t":{"22":{"position":[[5458,2],[5865,2],[6328,2]]},"59":{"position":[[177,2]]}}}],["对",{"_index":11,"t":{"2":{"position":[[81,1],[175,1]]},"8":{"position":[[124,1]]},"10":{"position":[[61,1],[259,1],[275,1],[323,1]]},"14":{"position":[[41,1]]},"20":{"position":[[6,1]]},"22":{"position":[[29,1]]},"39":{"position":[[0,1]]},"41":{"position":[[408,1],[601,1],[655,1],[2162,1]]},"74":{"position":[[1957,1]]}}}],["对于",{"_index":26,"t":{"2":{"position":[[210,2]]},"10":{"position":[[354,2]]},"32":{"position":[[70,2]]}}}],["对应",{"_index":132,"t":{"14":{"position":[[27,2]]},"57":{"position":[[110,2],[426,2]]},"59":{"position":[[174,2]]},"70":{"position":[[153,2]]},"84":{"position":[[113,2],[432,2]]}}}],["对象",{"_index":250,"t":{"22":{"position":[[4741,2],[4876,2]]},"41":{"position":[[98,2],[1383,2],[2142,2]]}}}],["寻找",{"_index":429,"t":{"59":{"position":[[94,2]]}}}],["封装",{"_index":52,"t":{"6":{"position":[[110,2],[125,2]]},"8":{"position":[[114,2]]},"10":{"position":[[223,2]]},"55":{"position":[[119,2]]},"82":{"position":[[143,2]]}}}],["将",{"_index":59,"t":{"6":{"position":[[143,1]]},"8":{"position":[[178,1]]},"22":{"position":[[5255,1]]},"41":{"position":[[367,1],[2103,1]]},"61":{"position":[[434,1],[995,1],[1582,1],[2267,1],[2905,1]]},"74":{"position":[[570,1],[1104,1],[1662,1],[1819,1],[2366,1],[2510,1]]}}}],["将要",{"_index":515,"t":{"74":{"position":[[682,2],[1215,2],[1789,2],[2480,2]]}}}],["尝试",{"_index":301,"t":{"41":{"position":[[260,2],[532,2]]},"57":{"position":[[1767,2],[2049,2]]},"68":{"position":[[2333,2],[2617,2]]},"84":{"position":[[1837,2],[2121,2]]},"87":{"position":[[222,2],[5806,2],[8408,2]]}}}],["就",{"_index":149,"t":{"16":{"position":[[175,1]]},"41":{"position":[[404,1],[2168,1]]}}}],["就是",{"_index":135,"t":{"14":{"position":[[59,2]]},"74":{"position":[[3,2],[61,2]]},"87":{"position":[[515,2],[696,2],[945,2],[1537,2],[2387,2],[2568,2],[2817,2],[3361,2],[4195,2],[4376,2],[4625,2],[5288,2],[6477,2],[6715,2],[7052,2],[7817,2],[9076,2],[9469,2],[9872,2],[10807,2]]}}}],["尽可能",{"_index":104,"t":{"10":{"position":[[301,3]]},"78":{"position":[[197,3]]}}}],["屏蔽掉",{"_index":105,"t":{"10":{"position":[[304,3]]}}}],["属性",{"_index":196,"t":{"18":{"position":[[1283,2]]},"32":{"position":[[18,2]]},"41":{"position":[[889,2],[1537,2]]}}}],["工具",{"_index":453,"t":{"68":{"position":[[70,2]]}}}],["差异",{"_index":254,"t":{"22":{"position":[[5293,2]]}}}],["差错",{"_index":305,"t":{"41":{"position":[[280,2]]}}}],["希望",{"_index":313,"t":{"41":{"position":[[423,2],[520,2]]}}}],["帮助",{"_index":336,"t":{"41":{"position":[[556,2]]},"57":{"position":[[227,2],[580,2]]},"84":{"position":[[230,2],[586,2]]}}}],["平台",{"_index":19,"t":{"2":{"position":[[172,2],[197,2]]},"6":{"position":[[37,2],[94,2]]},"8":{"position":[[37,2]]},"10":{"position":[[34,2]]},"39":{"position":[[73,2]]},"45":{"position":[[44,2],[127,2]]},"47":{"position":[[34,2]]},"49":{"position":[[40,2]]},"55":{"position":[[34,2]]},"57":{"position":[[112,2],[194,2],[428,2],[547,2],[816,2],[1748,2],[2030,2]]},"61":{"position":[[1213,2]]},"68":{"position":[[1658,2],[1977,2],[2314,2],[2598,2]]},"82":{"position":[[40,2]]},"84":{"position":[[115,2],[197,2],[434,2],[553,2],[825,2],[1818,2],[2102,2]]},"87":{"position":[[211,2],[2009,2],[2030,2],[2119,2],[2142,2],[3687,2],[3861,2],[3957,2],[5143,2],[5795,2],[8397,2]]},"89":{"position":[[131,2]]}}}],["并且",{"_index":226,"t":{"22":{"position":[[2508,2]]},"74":{"position":[[88,2]]}}}],["库",{"_index":10,"t":{"2":{"position":[[79,1]]},"4":{"position":[[50,1],[62,1]]},"6":{"position":[[160,1]]},"8":{"position":[[5,1],[81,1],[158,1],[200,1],[214,1],[264,1],[309,1]]},"10":{"position":[[5,1],[57,1],[70,1],[108,1],[215,1],[297,1]]},"14":{"position":[[11,1]]},"16":{"position":[[3313,1]]},"18":{"position":[[15,1]]},"20":{"position":[[3,1]]},"22":{"position":[[8,1],[22,1]]},"45":{"position":[[85,1],[95,1],[185,1]]},"49":{"position":[[8,1]]},"55":{"position":[[121,1]]},"57":{"position":[[818,1]]},"74":{"position":[[1915,1],[1962,1]]},"80":{"position":[[60,1],[91,1]]},"82":{"position":[[8,1],[86,1],[145,1],[150,1]]},"84":{"position":[[827,1]]},"89":{"position":[[3,1]]}}}],["应",{"_index":310,"t":{"41":{"position":[[405,1]]}}}],["应为",{"_index":481,"t":{"70":{"position":[[73,2]]}}}],["应当",{"_index":450,"t":{"66":{"position":[[3,2]]}}}],["应用",{"_index":266,"t":{"32":{"position":[[43,2],[49,2]]},"39":{"position":[[76,2]]},"72":{"position":[[17,2]]},"78":{"position":[[95,2]]}}}],["底层",{"_index":51,"t":{"6":{"position":[[108,2]]},"8":{"position":[[302,2]]},"10":{"position":[[307,2],[383,2]]},"55":{"position":[[117,2]]},"82":{"position":[[141,2]]}}}],["开发",{"_index":48,"t":{"6":{"position":[[92,2]]}}}],["开发者",{"_index":107,"t":{"10":{"position":[[324,3],[370,3]]},"32":{"position":[[95,3]]},"39":{"position":[[70,3]]}}}],["开启",{"_index":586,"t":{"87":{"position":[[2146,2],[2180,2],[3985,2]]}}}],["开头",{"_index":488,"t":{"70":{"position":[[356,2],[514,2]]}}}],["开始",{"_index":576,"t":{"87":{"position":[[1164,2],[1707,2],[3036,2],[3531,2],[4844,2],[5458,2],[7374,2],[8065,2],[10296,2],[11210,2]]}}}],["异常",{"_index":446,"t":{"61":{"position":[[460,2],[1021,2],[1608,2],[2293,2],[2931,2]]},"87":{"position":[[10174,2],[10330,2]]}}}],["异步",{"_index":391,"t":{"41":{"position":[[2063,2]]},"87":{"position":[[9204,2],[9290,2],[9299,2],[9680,2],[9689,2],[10079,2],[10088,2],[11018,2],[11027,2],[11042,2]]}}}],["式",{"_index":519,"t":{"74":{"position":[[1253,1],[1919,1],[1986,1],[2520,1]]}}}],["引入",{"_index":159,"t":{"16":{"position":[[276,2],[1070,2],[2190,2]]},"61":{"position":[[111,2],[673,2],[1255,2],[1857,2],[2498,2]]}}}],["引擎",{"_index":161,"t":{"16":{"position":[[286,2],[1080,2],[1152,2],[2200,2],[2272,2]]},"41":{"position":[[1077,2]]},"57":{"position":[[1062,2],[1117,2],[1231,2],[1317,2],[1616,2],[1758,2],[1815,2],[1903,2],[2040,2],[2097,2]]},"61":{"position":[[121,2],[683,2],[1265,2],[1867,2],[1939,2],[2508,2],[2580,2]]},"68":{"position":[[1407,2],[1448,2],[1453,2],[1478,2],[1545,2],[1778,2],[1865,2],[2096,2],[2182,2],[2324,2],[2381,2],[2471,2],[2608,2],[2665,2]]},"84":{"position":[[1047,2],[1088,2],[1093,2],[1118,2],[1188,2],[1304,2],[1390,2],[1686,2],[1828,2],[1885,2],[1975,2],[2112,2],[2169,2]]},"87":{"position":[[202,2],[236,2],[1351,2],[2001,2],[3846,2],[3871,2],[5128,2],[5153,2],[5786,2],[5820,2],[8388,2],[8422,2]]}}}],["引用",{"_index":179,"t":{"16":{"position":[[1624,2],[2744,2]]},"72":{"position":[[228,2]]},"74":{"position":[[103,2]]}}}],["强大",{"_index":100,"t":{"10":{"position":[[242,2]]}}}],["当前",{"_index":437,"t":{"61":{"position":[[4,2]]},"87":{"position":[[7480,2],[8132,2]]}}}],["当然",{"_index":113,"t":{"10":{"position":[[351,2]]},"68":{"position":[[346,2]]},"76":{"position":[[25,2]]}}}],["形式",{"_index":268,"t":{"32":{"position":[[111,2]]},"74":{"position":[[1857,2],[2541,2]]}}}],["很大",{"_index":435,"t":{"59":{"position":[[185,2]]}}}],["得到",{"_index":174,"t":{"16":{"position":[[775,2],[1848,2],[2968,2],[3524,2],[3719,2],[3923,2]]},"22":{"position":[[2555,2],[4737,2],[4872,2]]},"87":{"position":[[10216,2]]},"89":{"position":[[589,2],[917,2]]}}}],["必不可少",{"_index":127,"t":{"12":{"position":[[25,4]]}}}],["必填",{"_index":272,"t":{"37":{"position":[[16,2]]}}}],["必要",{"_index":156,"t":{"16":{"position":[[269,2],[1063,2],[2183,2]]},"61":{"position":[[104,2],[666,2],[1248,2],[1850,2],[2491,2]]}}}],["必须",{"_index":169,"t":{"16":{"position":[[529,2]]},"61":{"position":[[364,2],[925,2],[1512,2],[2189,2],[2830,2]]},"74":{"position":[[82,2],[1934,2]]}}}],["忽略",{"_index":514,"t":{"74":{"position":[[613,2],[1147,2],[1705,2],[2409,2]]}}}],["情况",{"_index":58,"t":{"6":{"position":[[140,2]]},"8":{"position":[[175,2]]},"10":{"position":[[367,2]]},"22":{"position":[[5460,2],[5867,2],[6330,2]]},"41":{"position":[[437,2]]},"61":{"position":[[455,2],[1016,2],[1603,2],[2288,2],[2926,2]]},"72":{"position":[[246,2]]}}}],["想要",{"_index":187,"t":{"18":{"position":[[0,2]]},"57":{"position":[[1809,2],[2091,2]]},"68":{"position":[[2375,2],[2659,2]]},"70":{"position":[[225,2]]},"84":{"position":[[1879,2],[2163,2]]}}}],["感谢您",{"_index":338,"t":{"41":{"position":[[571,3]]}}}],["慌",{"_index":531,"t":{"76":{"position":[[42,1]]}}}],["成员",{"_index":347,"t":{"41":{"position":[[708,2]]}}}],["我们",{"_index":128,"t":{"12":{"position":[[42,2]]},"14":{"position":[[14,2]]},"18":{"position":[[41,2]]},"41":{"position":[[421,2],[473,2],[518,2],[558,2]]},"59":{"position":[[4,2]]},"68":{"position":[[98,2]]},"74":{"position":[[35,2]]},"76":{"position":[[53,2]]},"78":{"position":[[124,2],[194,2],[222,2]]},"89":{"position":[[6,2]]}}}],["或者",{"_index":419,"t":{"57":{"position":[[1199,2],[1871,2]]},"68":{"position":[[1744,2],[2062,2],[2437,2]]},"84":{"position":[[1270,2],[1941,2]]},"87":{"position":[[368,2],[2240,2],[4048,2],[6046,2],[8648,2]]}}}],["或许",{"_index":495,"t":{"72":{"position":[[249,2]]}}}],["所在",{"_index":498,"t":{"74":{"position":[[9,2]]}}}],["所有",{"_index":215,"t":{"22":{"position":[[1982,2],[4997,2]]},"41":{"position":[[701,2],[1535,2]]},"59":{"position":[[15,2],[32,2]]}}}],["所求",{"_index":121,"t":{"10":{"position":[[391,2]]}}}],["所述",{"_index":217,"t":{"22":{"position":[[2183,2]]},"57":{"position":[[359,2],[711,2],[890,2]]},"84":{"position":[[365,2],[720,2],[902,2]]}}}],["手动",{"_index":182,"t":{"16":{"position":[[3354,2]]},"57":{"position":[[1811,2],[2093,2]]},"68":{"position":[[2377,2],[2661,2]]},"84":{"position":[[1881,2],[2165,2]]}}}],["才",{"_index":525,"t":{"74":{"position":[[1963,1]]},"78":{"position":[[224,1]]},"87":{"position":[[722,1],[1162,1],[1563,1],[1705,1],[2594,1],[3034,1],[3387,1],[3529,1],[4402,1],[4842,1],[5314,1],[5456,1],[6741,1],[7372,1],[7843,1],[8063,1],[9495,1],[10294,1],[10833,1],[11208,1]]}}}],["才能",{"_index":533,"t":{"76":{"position":[[50,2]]}}}],["打算",{"_index":397,"t":{"41":{"position":[[2128,2]]}}}],["执行",{"_index":392,"t":{"41":{"position":[[2066,2]]}}}],["扩展名",{"_index":480,"t":{"70":{"position":[[70,3]]}}}],["扫描",{"_index":486,"t":{"70":{"position":[[291,2],[449,2]]}}}],["批次",{"_index":358,"t":{"41":{"position":[[816,2],[836,2]]}}}],["找到",{"_index":147,"t":{"16":{"position":[[170,2]]}}}],["抛出",{"_index":445,"t":{"61":{"position":[[458,2],[1019,2],[1606,2],[2291,2],[2929,2]]}}}],["拍",{"_index":374,"t":{"41":{"position":[[921,1]]}}}],["拼接",{"_index":245,"t":{"22":{"position":[[3753,2],[3979,2],[4248,2]]}}}],["挂",{"_index":359,"t":{"41":{"position":[[841,1]]},"87":{"position":[[1200,1],[1743,1],[3072,1],[3567,1],[4880,1],[5494,1]]}}}],["指",{"_index":216,"t":{"22":{"position":[[2170,1]]}}}],["指定",{"_index":240,"t":{"22":{"position":[[2826,2],[3116,2],[3430,2]]},"57":{"position":[[1813,2],[2095,2]]},"68":{"position":[[2379,2],[2663,2]]},"84":{"position":[[1883,2],[2167,2]]}}}],["接下来",{"_index":474,"t":{"70":{"position":[[0,3]]},"74":{"position":[[0,3]]},"76":{"position":[[0,3]]}}}],["接口",{"_index":225,"t":{"22":{"position":[[2505,2]]}}}],["接收",{"_index":125,"t":{"12":{"position":[[16,2]]},"18":{"position":[[2,2],[46,2]]},"20":{"position":[[13,2]]},"22":{"position":[[5334,2]]},"87":{"position":[[519,2],[540,2],[700,2],[745,2],[949,2],[992,2],[1541,2],[1586,2],[2391,2],[2412,2],[2572,2],[2617,2],[2821,2],[2864,2],[3365,2],[3410,2],[4199,2],[4220,2],[4380,2],[4425,2],[4629,2],[4672,2],[5292,2],[5337,2],[6481,2],[6502,2],[6719,2],[6764,2],[7056,2],[7099,2],[7821,2],[7866,2],[9080,2],[9101,2],[9473,2],[9518,2],[9876,2],[9919,2],[10811,2],[10856,2]]}}}],["描述",{"_index":60,"t":{"6":{"position":[[150,2]]},"8":{"position":[[190,2]]}}}],["提供",{"_index":21,"t":{"2":{"position":[[193,2]]},"6":{"position":[[81,2],[117,2]]},"8":{"position":[[99,2]]},"10":{"position":[[40,2],[138,2],[174,2],[195,2],[248,2]]},"12":{"position":[[49,2]]},"14":{"position":[[16,2]]},"16":{"position":[[210,2]]},"22":{"position":[[43,2],[2444,2],[2543,2]]},"32":{"position":[[4,2]]},"43":{"position":[[4,2]]},"68":{"position":[[333,2]]},"89":{"position":[[16,2],[42,2]]}}}],["提出",{"_index":537,"t":{"76":{"position":[[80,2]]},"78":{"position":[[66,2]]}}}],["提及",{"_index":211,"t":{"22":{"position":[[835,2],[846,2],[1966,2],[1980,2],[4995,2]]}}}],["插件",{"_index":88,"t":{"8":{"position":[[282,2]]},"57":{"position":[[72,2],[98,2],[219,2],[388,2],[414,2],[572,2]]},"68":{"position":[[1650,2],[1969,2]]},"84":{"position":[[75,2],[101,2],[222,2],[394,2],[420,2],[578,2]]}}}],["搜索",{"_index":541,"t":{"78":{"position":[[48,2]]}}}],["搭建",{"_index":449,"t":{"64":{"position":[[123,2]]}}}],["操作",{"_index":398,"t":{"41":{"position":[[2132,2]]}}}],["支持",{"_index":41,"t":{"6":{"position":[[20,2]]},"8":{"position":[[20,2]]},"10":{"position":[[27,2],[290,2]]},"22":{"position":[[40,2],[105,2]]},"41":{"position":[[575,2]]},"45":{"position":[[27,2],[110,2]]},"47":{"position":[[17,2]]},"49":{"position":[[23,2]]},"55":{"position":[[17,2]]},"68":{"position":[[1377,2],[1427,2],[1458,2]]},"74":{"position":[[1960,2]]},"82":{"position":[[23,2]]},"84":{"position":[[1067,2],[1098,2]]},"87":{"position":[[1357,2],[2144,2],[3980,2]]}}}],["放在",{"_index":516,"t":{"74":{"position":[[691,2],[1224,2],[1798,2],[2489,2]]}}}],["效果",{"_index":393,"t":{"41":{"position":[[2101,2]]}}}],["数据",{"_index":287,"t":{"41":{"position":[[32,2],[230,2],[273,2],[466,2],[810,2]]}}}],["整个",{"_index":34,"t":{"4":{"position":[[16,2]]}}}],["文",{"_index":469,"t":{"68":{"position":[[532,1],[647,1],[775,1],[889,1],[1049,1],[1250,1]]}}}],["文件",{"_index":236,"t":{"22":{"position":[[2720,2],[2820,2],[3000,2],[3110,2],[3314,2],[3424,2]]},"70":{"position":[[288,2],[341,2],[446,2],[499,2]]}}}],["文件名",{"_index":478,"t":{"70":{"position":[[64,3]]}}}],["文件夹",{"_index":476,"t":{"70":{"position":[[28,3]]}}}],["文件目录",{"_index":475,"t":{"70":{"position":[[9,4],[158,4]]}}}],["文本",{"_index":205,"t":{"22":{"position":[[85,2],[96,2],[164,2],[185,2],[241,2],[279,2],[325,2],[360,2],[3964,2],[4233,2]]},"74":{"position":[[588,2],[1122,2],[1680,2],[2384,2]]}}}],["文档",{"_index":7,"t":{"2":{"position":[[57,2]]},"16":{"position":[[166,2]]},"41":{"position":[[1205,2],[1261,2]]},"59":{"position":[[82,2]]},"64":{"position":[[2,2]]},"68":{"position":[[1493,2]]},"74":{"position":[[1980,2]]},"78":{"position":[[37,2],[97,2],[134,2],[152,2],[175,2]]},"84":{"position":[[1133,2]]}}}],["新",{"_index":413,"t":{"57":{"position":[[162,1],[494,1],[1187,1],[1300,1],[1367,1],[1460,1],[1531,1],[1598,1],[1720,1],[2002,1]]},"68":{"position":[[1615,1],[1732,1],[1847,1],[1935,1],[2051,1],[2165,1],[2286,1],[2570,1]]},"84":{"position":[[165,1],[500,1],[1258,1],[1373,1],[1440,1],[1532,1],[1603,1],[1668,1],[1790,1],[2074,1]]}}}],["方式",{"_index":173,"t":{"16":{"position":[[620,2]]},"59":{"position":[[91,2]]},"89":{"position":[[136,2]]}}}],["方法",{"_index":597,"t":{"89":{"position":[[31,2]]}}}],["施工",{"_index":404,"t":{"45":{"position":[[187,2]]},"51":{"position":[[0,2]]},"80":{"position":[[5,2]]}}}],["无法",{"_index":323,"t":{"41":{"position":[[475,2]]},"72":{"position":[[226,2]]}}}],["无需",{"_index":206,"t":{"22":{"position":[[91,2]]}}}],["早",{"_index":492,"t":{"72":{"position":[[209,1]]}}}],["时",{"_index":279,"t":{"39":{"position":[[42,1]]},"41":{"position":[[546,1],[677,1],[1343,1],[2088,1]]},"74":{"position":[[568,1],[1102,1],[1660,1],[2364,1]]},"87":{"position":[[194,1],[341,1],[1993,1],[2213,1],[3838,1],[4021,1],[5120,1],[5778,1],[6001,1],[8380,1],[8603,1]]}}}],["时不时",{"_index":547,"t":{"78":{"position":[[83,3]]}}}],["时候",{"_index":350,"t":{"41":{"position":[[757,2],[1291,2]]},"68":{"position":[[256,2]]},"74":{"position":[[611,2],[1145,2],[1703,2],[2407,2]]}}}],["时间",{"_index":361,"t":{"41":{"position":[[846,2],[1296,2],[1974,2]]}}}],["明",{"_index":112,"t":{"10":{"position":[[340,1]]}}}],["是否",{"_index":285,"t":{"41":{"position":[[28,2],[275,2],[2060,2]]},"87":{"position":[[290,2],[2099,2],[3933,2],[5932,2],[8534,2]]}}}],["更",{"_index":22,"t":{"2":{"position":[[195,1]]},"10":{"position":[[266,1]]},"16":{"position":[[152,1]]},"22":{"position":[[2459,1]]},"41":{"position":[[529,1],[1196,1],[1252,1],[1667,1],[1788,1],[1921,1]]}}}],["更加",{"_index":110,"t":{"10":{"position":[[336,2]]},"41":{"position":[[245,2]]}}}],["更好",{"_index":535,"t":{"76":{"position":[[57,2]]}}}],["更新",{"_index":312,"t":{"41":{"position":[[416,2]]},"78":{"position":[[87,2]]}}}],["替代",{"_index":592,"t":{"87":{"position":[[9270,2],[11108,2]]}}}],["最好",{"_index":415,"t":{"57":{"position":[[214,2],[567,2]]},"84":{"position":[[217,2],[573,2]]}}}],["最终",{"_index":544,"t":{"78":{"position":[[72,2],[219,2]]}}}],["有效",{"_index":343,"t":{"41":{"position":[[678,2]]}}}],["有着",{"_index":198,"t":{"20":{"position":[[16,2]]}}}],["服务器",{"_index":344,"t":{"41":{"position":[[683,3],[696,3]]},"61":{"position":[[16,3]]},"68":{"position":[[296,3]]},"87":{"position":[[1175,3],[1718,3],[3047,3],[3542,3],[4855,3],[5469,3],[7385,3],[8076,3],[10307,3],[11221,3]]},"89":{"position":[[82,3]]}}}],["服务器进行",{"_index":278,"t":{"39":{"position":[[33,5]]},"41":{"position":[[604,5],[658,5]]}}}],["本",{"_index":261,"t":{"32":{"position":[[0,1]]},"64":{"position":[[0,1]]}}}],["本地",{"_index":487,"t":{"70":{"position":[[339,2],[497,2]]}}}],["本手册",{"_index":545,"t":{"78":{"position":[[75,3],[230,3]]}}}],["本次",{"_index":568,"t":{"87":{"position":[[517,2],[698,2],[947,2],[1539,2],[2389,2],[2570,2],[2819,2],[3363,2],[4197,2],[4378,2],[4627,2],[5290,2],[6479,2],[6717,2],[7054,2],[7819,2],[9078,2],[9471,2],[9874,2],[10809,2]]}}}],["本身",{"_index":385,"t":{"41":{"position":[[1336,2]]}}}],["机制",{"_index":295,"t":{"41":{"position":[[235,2],[567,2]]}}}],["机器人",{"_index":5,"t":{"2":{"position":[[37,3],[87,3]]},"4":{"position":[[11,3]]},"6":{"position":[[89,3]]},"10":{"position":[[76,3]]},"64":{"position":[[147,3]]},"66":{"position":[[19,3]]}}}],["权",{"_index":164,"t":{"16":{"position":[[392,1],[1264,1],[2384,1]]},"61":{"position":[[227,1],[788,1],[1375,1],[2051,1],[2692,1]]}}}],["条件",{"_index":471,"t":{"68":{"position":[[1413,2]]},"84":{"position":[[1053,2]]}}}],["来到",{"_index":1,"t":{"2":{"position":[[2,2]]}}}],["来源",{"_index":181,"t":{"16":{"position":[[3346,2]]}}}],["来说",{"_index":401,"t":{"41":{"position":[[2164,2]]}}}],["极其",{"_index":551,"t":{"78":{"position":[[113,2]]}}}],["构建",{"_index":18,"t":{"2":{"position":[[164,2]]},"6":{"position":[[15,2]]},"8":{"position":[[15,2]]},"10":{"position":[[22,2]]},"16":{"position":[[506,2],[618,2],[1009,2],[1379,2],[2129,2],[2499,2],[3320,2],[3498,2],[3644,2],[3690,2],[3848,2],[3894,2]]},"18":{"position":[[468,2],[889,2]]},"22":{"position":[[3620,2],[3830,2],[4099,2],[4447,2]]},"45":{"position":[[22,2],[105,2]]},"47":{"position":[[12,2]]},"49":{"position":[[18,2]]},"55":{"position":[[12,2]]},"61":{"position":[[341,2],[902,2],[1489,2],[1796,2],[2166,2],[2437,2],[2807,2]]},"82":{"position":[[18,2]]},"87":{"position":[[54,2],[1320,2],[1853,2],[3192,2],[3698,2],[5000,2],[6305,2],[7637,2],[8907,2],[10663,2]]},"89":{"position":[[147,2],[483,2],[535,2],[811,2],[863,2]]}}}],["某个",{"_index":571,"t":{"87":{"position":[[859,2],[1468,2],[2731,2],[3292,2],[4539,2],[5219,2],[6948,2],[7724,2],[9771,2],[10717,2]]}}}],["某处",{"_index":578,"t":{"87":{"position":[[1217,2],[1760,2],[3089,2],[3584,2],[4897,2],[5511,2],[7499,2],[8151,2],[10411,2],[11291,2]]}}}],["查看",{"_index":283,"t":{"39":{"position":[[80,2]]},"57":{"position":[[976,2]]}}}],["查询",{"_index":573,"t":{"87":{"position":[[1084,2],[2956,2],[4764,2],[7261,2],[10150,2]]}}}],["查阅",{"_index":427,"t":{"59":{"position":[[86,2]]}}}],["标准",{"_index":28,"t":{"2":{"position":[[223,2]]},"4":{"position":[[48,2]]},"8":{"position":[[3,2],[79,2],[156,2],[212,2]]},"14":{"position":[[9,2]]},"16":{"position":[[3311,2]]},"22":{"position":[[30,2],[66,2],[2428,2]]},"45":{"position":[[83,2],[93,2]]},"49":{"position":[[6,2]]},"82":{"position":[[6,2],[84,2],[148,2]]},"89":{"position":[[1,2]]}}}],["标注",{"_index":491,"t":{"72":{"position":[[34,2]]}}}],["校验",{"_index":275,"t":{"39":{"position":[[10,2]]}}}],["核心",{"_index":9,"t":{"2":{"position":[[77,2]]},"4":{"position":[[60,2]]},"10":{"position":[[3,2],[55,2],[68,2],[106,2],[213,2],[295,2]]},"18":{"position":[[13,2]]},"20":{"position":[[1,2]]},"22":{"position":[[6,2]]},"45":{"position":[[183,2]]},"80":{"position":[[58,2],[89,2]]}}}],["根据",{"_index":570,"t":{"87":{"position":[[610,2],[840,2],[2482,2],[2712,2],[4290,2],[4520,2],[6605,2],[6929,2],[9362,2],[9752,2]]}}}],["检测",{"_index":439,"t":{"61":{"position":[[423,2],[984,2],[1571,2],[2256,2],[2894,2]]}}}],["概念",{"_index":66,"t":{"8":{"position":[[111,2]]}}}],["概率",{"_index":510,"t":{"74":{"position":[[593,2],[1127,2],[1685,2],[2389,2]]}}}],["概要",{"_index":40,"t":{"6":{"position":[[0,2]]},"8":{"position":[[0,2]]},"10":{"position":[[0,2],[348,2]]}}}],["模块",{"_index":16,"t":{"2":{"position":[[117,2]]},"4":{"position":[[26,2],[38,2],[52,2],[64,2]]},"6":{"position":[[6,2],[73,2],[114,2]]},"8":{"position":[[6,2],[82,2],[89,2],[151,2],[159,2],[209,2],[215,2],[247,2]]},"10":{"position":[[6,2],[58,2],[109,2],[216,2],[298,2],[317,2]]},"14":{"position":[[6,2],[56,2]]},"45":{"position":[[13,2],[96,2]]},"47":{"position":[[3,2]]},"49":{"position":[[9,2]]},"55":{"position":[[3,2],[70,2]]},"82":{"position":[[9,2],[87,2],[151,2],[158,2]]}}}],["模式",{"_index":284,"t":{"39":{"position":[[147,2]]}}}],["欢迎",{"_index":0,"t":{"2":{"position":[[0,2]]}}}],["此参数",{"_index":364,"t":{"41":{"position":[[861,3]]}}}],["此基础",{"_index":64,"t":{"8":{"position":[[93,3]]}}}],["此处",{"_index":177,"t":{"16":{"position":[[1139,2],[2259,2]]},"59":{"position":[[9,2]]},"61":{"position":[[1200,2],[1926,2],[2567,2]]},"74":{"position":[[33,2]]},"87":{"position":[[2043,2],[3674,2]]}}}],["此时",{"_index":389,"t":{"41":{"position":[[1434,2]]},"74":{"position":[[97,2]]}}}],["每次",{"_index":599,"t":{"89":{"position":[[37,2]]}}}],["比如",{"_index":410,"t":{"57":{"position":[[115,2],[431,2]]},"59":{"position":[[124,2]]},"84":{"position":[[118,2],[437,2]]}}}],["毫秒",{"_index":341,"t":{"41":{"position":[[621,2],[671,2],[733,2],[851,2],[1993,2]]}}}],["沙箱",{"_index":527,"t":{"76":{"position":[[12,2]]}}}],["没",{"_index":584,"t":{"87":{"position":[[2034,1]]}}}],["没有",{"_index":383,"t":{"41":{"position":[[1133,2],[2169,2]]},"68":{"position":[[1629,2],[1948,2]]}}}],["注册",{"_index":189,"t":{"18":{"position":[[16,2]]},"41":{"position":[[2145,2]]},"87":{"position":[[464,2],[2336,2],[4144,2],[6408,2],[9010,2]]}}}],["注意",{"_index":351,"t":{"41":{"position":[[761,2]]},"68":{"position":[[236,2],[1416,2],[1471,2]]},"84":{"position":[[1056,2],[1111,2]]},"87":{"position":[[3864,2],[5146,2]]}}}],["注解",{"_index":513,"t":{"74":{"position":[[605,2],[1139,2],[1697,2],[2401,2]]}}}],["注释",{"_index":555,"t":{"78":{"position":[[136,2]]}}}],["活",{"_index":466,"t":{"68":{"position":[[369,1]]}}}],["活跃",{"_index":596,"t":{"87":{"position":[[10375,2],[11255,2]]}}}],["测试",{"_index":319,"t":{"41":{"position":[[460,2]]}}}],["消息",{"_index":70,"t":{"8":{"position":[[138,2]]},"10":{"position":[[270,2]]},"12":{"position":[[13,2]]},"14":{"position":[[42,2]]},"16":{"position":[[0,2],[7,2],[77,2],[110,2],[141,2],[605,2],[1433,2],[1527,2],[1611,2],[1711,2],[2553,2],[2647,2],[2731,2],[2831,2]]},"18":{"position":[[4,2],[36,2],[49,2],[1270,2],[1293,2]]},"20":{"position":[[7,2]]},"22":{"position":[[32,2],[51,2],[68,2],[87,2],[98,2],[166,2],[187,2],[243,2],[281,2],[327,2],[362,2],[394,2],[2430,2],[2452,2],[2463,2],[2476,2],[2577,2],[2828,2],[3118,2],[3432,2],[3570,2],[3640,2],[4399,2],[4453,2],[4731,2],[4739,2],[4866,2],[4874,2],[5256,2],[5263,2],[5280,2],[5287,2],[5323,2],[5337,2]]},"74":{"position":[[68,2],[110,2],[579,2],[590,2],[706,2],[1113,2],[1124,2],[1239,2],[1671,2],[1682,2],[1813,2],[2375,2],[2386,2],[2504,2]]},"87":{"position":[[1181,2],[1724,2],[3053,2],[3548,2],[4861,2],[5475,2],[7391,2],[8082,2],[10313,2],[11227,2]]}}}],["消耗",{"_index":552,"t":{"78":{"position":[[115,2]]}}}],["添加",{"_index":416,"t":{"57":{"position":[[216,2],[250,2],[569,2],[603,2]]},"68":{"position":[[77,2],[94,2]]},"84":{"position":[[219,2],[253,2],[575,2],[609,2]]}}}],["清晰",{"_index":111,"t":{"10":{"position":[[338,2]]}}}],["源码",{"_index":428,"t":{"59":{"position":[[88,2]]},"78":{"position":[[43,2],[131,2],[162,2]]}}}],["满足",{"_index":220,"t":{"22":{"position":[[2457,2]]},"41":{"position":[[406,2]]}}}],["演示",{"_index":425,"t":{"59":{"position":[[22,2]]}}}],["然后",{"_index":440,"t":{"61":{"position":[[432,2],[993,2],[1580,2],[2265,2],[2903,2]]},"68":{"position":[[90,2]]}}}],["父",{"_index":579,"t":{"87":{"position":[[1241,1],[1784,1],[3113,1],[3608,1],[4921,1],[5535,1],[7523,1],[8175,1],[10435,1],[11315,1]]}}}],["版本",{"_index":297,"t":{"41":{"position":[[241,2]]},"57":{"position":[[164,2],[353,2],[496,2],[705,2],[884,2],[956,2],[961,2],[1193,2],[1209,2],[1306,2],[1373,2],[1466,2],[1537,2],[1604,2],[1726,2],[1881,2],[2008,2]]},"68":{"position":[[164,2],[226,2],[526,2],[641,2],[769,2],[883,2],[1043,2],[1244,2],[1621,2],[1738,2],[1754,2],[1853,2],[1941,2],[2057,2],[2072,2],[2171,2],[2292,2],[2447,2],[2576,2]]},"78":{"position":[[180,2]]},"84":{"position":[[167,2],[359,2],[502,2],[714,2],[896,2],[1264,2],[1280,2],[1379,2],[1446,2],[1538,2],[1609,2],[1674,2],[1796,2],[1951,2],[2080,2]]}}}],["特殊",{"_index":115,"t":{"10":{"position":[[358,2]]},"74":{"position":[[577,2],[1111,2],[1669,2],[2373,2]]}}}],["独特",{"_index":95,"t":{"10":{"position":[[207,2]]}}}],["独立",{"_index":74,"t":{"8":{"position":[[203,2],[299,2]]},"55":{"position":[[73,2]]},"82":{"position":[[90,2]]}}}],["环境",{"_index":447,"t":{"61":{"position":[[1215,2]]},"74":{"position":[[1929,2]]},"80":{"position":[[47,2]]},"87":{"position":[[228,2],[1340,2],[3689,2],[5812,2],[8414,2]]}}}],["现实",{"_index":426,"t":{"59":{"position":[[28,2]]}}}],["理所应当",{"_index":129,"t":{"12":{"position":[[44,4]]}}}],["生成",{"_index":561,"t":{"78":{"position":[[164,2]]}}}],["用于",{"_index":155,"t":{"16":{"position":[[245,2],[1039,2],[2159,2]]},"22":{"position":[[2643,2],[2914,2],[3222,2]]},"61":{"position":[[80,2],[642,2],[1224,2],[1826,2],[2467,2]]},"70":{"position":[[36,2]]},"89":{"position":[[21,2]]}}}],["用户",{"_index":212,"t":{"22":{"position":[[850,2],[5001,2]]},"61":{"position":[[6,2]]},"74":{"position":[[105,2],[127,2],[146,2]]}}}],["用来",{"_index":210,"t":{"22":{"position":[[399,2]]}}}],["由此",{"_index":557,"t":{"78":{"position":[[145,2]]}}}],["疑惑",{"_index":543,"t":{"78":{"position":[[68,2],[215,2]]}}}],["疑问",{"_index":538,"t":{"76":{"position":[[82,2]]}}}],["的话",{"_index":414,"t":{"57":{"position":[[196,2],[549,2]]},"84":{"position":[[199,2],[555,2]]},"87":{"position":[[6402,2],[7716,2],[9004,2]]}}}],["监听",{"_index":399,"t":{"41":{"position":[[2152,2]]},"74":{"position":[[20,2],[25,2],[37,2],[684,2],[700,2],[1217,2],[1233,2],[1791,2],[1807,2],[2482,2],[2498,2]]}}}],["目前",{"_index":318,"t":{"41":{"position":[[458,2],[681,2]]}}}],["目录",{"_index":403,"t":{"43":{"position":[[1,2]]}}}],["目标",{"_index":170,"t":{"16":{"position":[[587,2],[1425,2],[1519,2],[1603,2],[1703,2],[2545,2],[2639,2],[2723,2],[2823,2]]}}}],["目的",{"_index":122,"t":{"10":{"position":[[393,2]]}}}],["直到",{"_index":577,"t":{"87":{"position":[[1203,2],[1746,2],[3075,2],[3570,2],[4883,2],[5497,2],[7485,2],[8137,2],[10397,2],[11277,2]]}}}],["直接",{"_index":80,"t":{"8":{"position":[[250,2]]},"16":{"position":[[3330,2]]},"22":{"position":[[3547,2],[3636,2],[3751,2],[3977,2],[4246,2],[4603,2]]},"32":{"position":[[104,2]]},"41":{"position":[[262,2],[1378,2],[1388,2],[2130,2]]},"61":{"position":[[606,2],[1167,2],[1754,2]]}}}],["相关",{"_index":81,"t":{"8":{"position":[[261,2]]},"16":{"position":[[9,2]]},"41":{"position":[[772,2]]},"78":{"position":[[213,2]]},"87":{"position":[[160,2],[1959,2],[3804,2],[5744,2],[8346,2]]}}}],["相同",{"_index":379,"t":{"41":{"position":[[1025,2],[1130,2]]}}}],["相当于",{"_index":567,"t":{"80":{"position":[[30,3]]}}}],["省略",{"_index":186,"t":{"16":{"position":[[3635,2],[3839,2]]},"18":{"position":[[459,2],[880,2]]},"87":{"position":[[2047,2],[6393,2],[7707,2],[8995,2]]},"89":{"position":[[117,2],[251,2],[474,2],[802,2]]}}}],["看看",{"_index":204,"t":{"22":{"position":[[61,2]]}}}],["真正",{"_index":441,"t":{"61":{"position":[[435,2],[996,2],[1583,2],[2268,2],[2906,2]]}}}],["确保",{"_index":582,"t":{"87":{"position":[[1331,2]]}}}],["示例",{"_index":154,"t":{"16":{"position":[[215,2]]},"32":{"position":[[25,2]]},"34":{"position":[[2,2],[524,2]]},"43":{"position":[[19,2]]},"59":{"position":[[205,2]]},"87":{"position":[[1313,2],[3185,2],[4993,2],[7557,2],[10583,2]]}}}],["社区",{"_index":536,"t":{"76":{"position":[[77,2]]},"78":{"position":[[63,2],[209,2]]}}}],["票据",{"_index":281,"t":{"39":{"position":[[51,2]]}}}],["禁用",{"_index":302,"t":{"41":{"position":[[264,2],[430,2],[481,2],[534,2]]},"87":{"position":[[334,2],[2206,2],[4014,2],[5994,2],[8596,2]]}}}],["私信",{"_index":142,"t":{"16":{"position":[[137,2]]}}}],["种",{"_index":258,"t":{"22":{"position":[[5427,1],[5834,1],[6297,1]]}}}],["秒",{"_index":348,"t":{"41":{"position":[[742,1]]}}}],["积极",{"_index":532,"t":{"76":{"position":[[44,2]]}}}],["移除",{"_index":423,"t":{"57":{"position":[[1821,2],[2103,2]]},"68":{"position":[[2387,2],[2671,2]]},"74":{"position":[[581,2],[1115,2],[1673,2],[2377,2]]},"84":{"position":[[1891,2],[2175,2]]}}}],["程序",{"_index":456,"t":{"68":{"position":[[266,2],[302,2],[366,2]]},"76":{"position":[[6,2]]}}}],["程序运行",{"_index":463,"t":{"68":{"position":[[337,4]]}}}],["程度",{"_index":368,"t":{"41":{"position":[[894,2]]}}}],["稳定",{"_index":299,"t":{"41":{"position":[[247,2]]},"87":{"position":[[2165,2]]}}}],["空格",{"_index":512,"t":{"74":{"position":[[599,2],[617,2],[1133,2],[1151,2],[1691,2],[1709,2],[2395,2],[2413,2]]}}}],["章节",{"_index":262,"t":{"32":{"position":[[1,2]]},"70":{"position":[[109,2]]}}}],["第三方",{"_index":522,"t":{"74":{"position":[[1912,3]]}}}],["等",{"_index":72,"t":{"8":{"position":[[142,1]]},"10":{"position":[[292,1]]},"16":{"position":[[151,1]]},"41":{"position":[[771,1]]},"57":{"position":[[123,1],[439,1]]},"68":{"position":[[69,1]]},"72":{"position":[[245,1]]},"74":{"position":[[2517,1]]},"84":{"position":[[126,1],[445,1]]},"87":{"position":[[9249,1],[11087,1]]}}}],["等价",{"_index":591,"t":{"87":{"position":[[9268,2],[11106,2]]}}}],["等待",{"_index":360,"t":{"41":{"position":[[843,2],[882,2]]}}}],["简",{"_index":270,"t":{"34":{"position":[[523,1]]}}}],["简化版",{"_index":581,"t":{"87":{"position":[[1309,3],[3181,3],[4989,3],[7553,3],[10579,3]]}}}],["简单",{"_index":153,"t":{"16":{"position":[[212,2]]},"43":{"position":[[17,2]]}}}],["简称",{"_index":4,"t":{"2":{"position":[[21,2],[46,2]]}}}],["篇",{"_index":496,"t":{"72":{"position":[[257,1]]}}}],["类",{"_index":227,"t":{"22":{"position":[[2519,1]]},"59":{"position":[[111,1]]},"72":{"position":[[29,1]]}}}],["类似",{"_index":395,"t":{"41":{"position":[[2117,2]]},"74":{"position":[[122,2]]}}}],["类型",{"_index":50,"t":{"6":{"position":[[105,2]]},"8":{"position":[[153,2]]},"10":{"position":[[135,2],[182,2]]},"22":{"position":[[55,2],[2432,2],[2454,2],[2471,2],[2478,2],[2572,2],[2830,2],[3120,2],[3434,2],[5289,2],[5428,2],[5835,2],[6298,2]]},"41":{"position":[[1023,2],[2052,2]]},"74":{"position":[[689,2],[703,2],[1222,2],[1236,2],[1796,2],[1810,2],[1920,2],[2487,2],[2501,2],[2521,2]]},"87":{"position":[[628,2],[718,2],[844,2],[1559,2],[2500,2],[2590,2],[2716,2],[3383,2],[4308,2],[4398,2],[4524,2],[5310,2],[6623,2],[6737,2],[6933,2],[7839,2],[9380,2],[9491,2],[9756,2],[10829,2]]}}}],["粗体",{"_index":243,"t":{"22":{"position":[[3702,2]]}}}],["精力",{"_index":553,"t":{"78":{"position":[[117,2]]}}}],["精力有限",{"_index":549,"t":{"78":{"position":[[101,4]]}}}],["紧随",{"_index":560,"t":{"78":{"position":[[160,2]]}}}],["线程",{"_index":464,"t":{"68":{"position":[[359,2]]},"87":{"position":[[7482,2],[8134,2]]}}}],["组件",{"_index":6,"t":{"2":{"position":[[40,2],[53,2],[65,2],[100,2]]},"4":{"position":[[14,2]]},"10":{"position":[[96,2],[201,2]]},"12":{"position":[[38,2]]},"22":{"position":[[4,2],[20,2],[2441,2]]},"32":{"position":[[47,2]]},"37":{"position":[[31,2]]},"43":{"position":[[14,2]]},"64":{"position":[[117,2]]},"68":{"position":[[273,2],[546,2],[789,2],[1120,2]]}}}],["组合",{"_index":580,"t":{"87":{"position":[[1267,2],[1810,2],[3139,2],[3634,2],[4947,2],[5561,2],[7413,2]]}}}],["终止",{"_index":460,"t":{"68":{"position":[[309,2]]},"87":{"position":[[10518,2],[11436,2]]}}}],["结构",{"_index":483,"t":{"70":{"position":[[135,2]]}}}],["结果",{"_index":175,"t":{"16":{"position":[[777,2],[1850,2],[2970,2],[3047,2],[3526,2],[3721,2],[3925,2]]},"61":{"position":[[442,2],[1003,2],[1590,2],[2275,2],[2913,2]]},"87":{"position":[[9301,2],[9691,2],[10090,2],[10218,2],[11029,2]]},"89":{"position":[[591,2],[919,2]]}}}],["绝大多数",{"_index":27,"t":{"2":{"position":[[218,4]]}}}],["统一",{"_index":57,"t":{"6":{"position":[[137,2]]},"8":{"position":[[172,2],[234,2]]}}}],["维持",{"_index":462,"t":{"68":{"position":[[335,2]]}}}],["缓存",{"_index":288,"t":{"41":{"position":[[96,2],[411,2],[565,2]]}}}],["缓存数据",{"_index":315,"t":{"41":{"position":[[446,4],[502,4]]}}}],["编",{"_index":448,"t":{"64":{"position":[[1,1]]}}}],["编写",{"_index":14,"t":{"2":{"position":[[111,2]]},"64":{"position":[[121,2]]},"74":{"position":[[16,2]]},"78":{"position":[[106,2]]}}}],["编译",{"_index":86,"t":{"8":{"position":[[274,2]]}}}],["编译器",{"_index":87,"t":{"8":{"position":[[279,3]]}}}],["网",{"_index":32,"t":{"2":{"position":[[243,1]]},"78":{"position":[[11,1]]},"80":{"position":[[82,1]]}}}],["网站",{"_index":546,"t":{"78":{"position":[[78,2],[233,2]]}}}],["翻阅",{"_index":540,"t":{"78":{"position":[[45,2]]}}}],["考虑",{"_index":352,"t":{"41":{"position":[[763,2]]},"68":{"position":[[42,2]]},"78":{"position":[[226,2]]}}}],["而言",{"_index":298,"t":{"41":{"position":[[243,2]]}}}],["聊天",{"_index":123,"t":{"12":{"position":[[4,2]]},"16":{"position":[[108,2],[139,2]]}}}],["能力",{"_index":67,"t":{"8":{"position":[[117,2],[143,2],[188,2]]},"10":{"position":[[209,2],[245,2]]},"12":{"position":[[56,2]]},"68":{"position":[[342,2]]},"78":{"position":[[27,2]]},"82":{"position":[[138,2]]}}}],["能够",{"_index":208,"t":{"22":{"position":[[102,2]]},"68":{"position":[[263,2]]}}}],["脑瓜儿",{"_index":375,"t":{"41":{"position":[[922,3]]}}}],["自动",{"_index":409,"t":{"57":{"position":[[103,2],[230,2],[419,2],[583,2]]},"68":{"position":[[307,2]]},"78":{"position":[[185,2]]},"84":{"position":[[106,2],[233,2],[425,2],[589,2]]},"87":{"position":[[224,2],[5808,2],[8410,2]]}}}],["自定义",{"_index":242,"t":{"22":{"position":[[3555,3]]},"70":{"position":[[278,3],[436,3]]},"87":{"position":[[370,3],[2242,3],[4050,3],[6048,3],[8650,3]]}}}],["自然",{"_index":200,"t":{"22":{"position":[[26,2],[100,2]]}}}],["自行",{"_index":158,"t":{"16":{"position":[[274,2],[1068,2],[2188,2]]},"22":{"position":[[2632,2],[2903,2],[3211,2],[3618,2]]},"61":{"position":[[109,2],[671,2],[1253,2],[1855,2],[2496,2]]},"68":{"position":[[362,2]]}}}],["自身",{"_index":574,"t":{"87":{"position":[[1089,2],[2961,2],[4769,2],[7266,2],[10155,2]]}}}],["至少",{"_index":451,"t":{"66":{"position":[[7,2]]}}}],["范围",{"_index":332,"t":{"41":{"position":[[526,2]]}}}],["获取",{"_index":176,"t":{"16":{"position":[[1012,2],[2132,2]]},"59":{"position":[[129,2]]},"61":{"position":[[2,2],[1799,2],[2440,2]]},"89":{"position":[[78,2],[259,2]]}}}],["衍生",{"_index":575,"t":{"87":{"position":[[1153,2],[1696,2],[3025,2],[3520,2],[4833,2],[5447,2],[7363,2],[8054,2],[10285,2],[11199,2]]}}}],["表现",{"_index":252,"t":{"22":{"position":[[5018,2]]},"41":{"position":[[2099,2]]}}}],["要",{"_index":166,"t":{"16":{"position":[[508,1]]},"61":{"position":[[343,1],[904,1],[1491,1],[2168,1],[2809,1]]},"70":{"position":[[336,1],[494,1]]}}}],["要求",{"_index":502,"t":{"74":{"position":[[77,2],[1901,2]]}}}],["覆盖",{"_index":387,"t":{"41":{"position":[[1347,2],[1392,2]]}}}],["观察",{"_index":304,"t":{"41":{"position":[[271,2]]}}}],["规律",{"_index":432,"t":{"59":{"position":[[121,2]]}}}],["角色",{"_index":214,"t":{"22":{"position":[[864,2]]}}}],["解决方案",{"_index":45,"t":{"6":{"position":[[64,4]]},"8":{"position":[[73,4]]},"45":{"position":[[71,4],[165,4]]},"47":{"position":[[61,4]]},"49":{"position":[[78,4]]},"55":{"position":[[61,4]]},"82":{"position":[[78,4]]}}}],["解析",{"_index":197,"t":{"18":{"position":[[1288,2]]},"22":{"position":[[3765,2],[4611,2],[4727,2],[4862,2]]}}}],["触发",{"_index":370,"t":{"41":{"position":[[899,2]]},"87":{"position":[[724,2],[1565,2],[2596,2],[3389,2],[4404,2],[5316,2],[6743,2],[7845,2],[9497,2],[10835,2]]}}}],["言",{"_index":207,"t":{"22":{"position":[[94,1]]}}}],["订阅",{"_index":63,"t":{"8":{"position":[[70,2],[135,2],[185,2]]},"10":{"position":[[263,2]]},"18":{"position":[[27,2],[34,2]]},"39":{"position":[[40,2]]},"45":{"position":[[156,2]]},"49":{"position":[[69,2]]},"82":{"position":[[69,2],[136,2]]},"87":{"position":[[622,2],[862,2],[1179,2],[1466,2],[1722,2],[2494,2],[2734,2],[3051,2],[3290,2],[3546,2],[4302,2],[4542,2],[4859,2],[5217,2],[5473,2],[6617,2],[6951,2],[7389,2],[7722,2],[8080,2],[9374,2],[9774,2],[10311,2],[10715,2],[11225,2]]}}}],["记得",{"_index":594,"t":{"87":{"position":[[10170,2],[10326,2]]}}}],["设置",{"_index":306,"t":{"41":{"position":[[380,2]]}}}],["访问",{"_index":276,"t":{"39":{"position":[[13,2]]}}}],["试",{"_index":291,"t":{"41":{"position":[[199,1]]}}}],["试试看",{"_index":528,"t":{"76":{"position":[[19,3]]}}}],["详细",{"_index":145,"t":{"16":{"position":[[153,2]]}}}],["语言",{"_index":13,"t":{"2":{"position":[[109,2]]}}}],["说",{"_index":503,"t":{"74":{"position":[[90,1]]}}}],["说明",{"_index":558,"t":{"78":{"position":[[155,2]]}}}],["请",{"_index":467,"t":{"68":{"position":[[528,1],[771,1],[1045,1],[1470,1]]},"84":{"position":[[1110,1]]},"87":{"position":[[3863,1],[5145,1]]}}}],["请求",{"_index":44,"t":{"6":{"position":[[53,2],[60,2]]},"8":{"position":[[53,2],[60,2]]},"16":{"position":[[247,2],[509,2],[1041,2],[1845,2],[2161,2],[2965,2],[3341,2],[3716,2],[3920,2]]},"41":{"position":[[873,2],[1289,2]]},"45":{"position":[[60,2],[67,2],[143,2],[150,2]]},"47":{"position":[[50,2],[57,2]]},"49":{"position":[[56,2],[63,2]]},"55":{"position":[[50,2],[57,2]]},"61":{"position":[[82,2],[344,2],[644,2],[905,2],[1226,2],[1492,2],[1828,2],[2169,2],[2469,2],[2810,2]]},"82":{"position":[[56,2],[63,2]]},"87":{"position":[[187,2],[339,2],[1986,2],[2211,2],[3831,2],[4019,2],[5113,2],[5771,2],[5999,2],[8373,2],[8601,2]]},"89":{"position":[[23,2],[314,2],[586,2],[914,2]]}}}],["调",{"_index":362,"t":{"41":{"position":[[859,1]]}}}],["调用",{"_index":353,"t":{"41":{"position":[[765,2],[901,2]]},"87":{"position":[[1141,2],[1219,2],[1684,2],[1762,2],[3013,2],[3091,2],[3508,2],[3586,2],[4821,2],[4899,2],[5435,2],[5513,2],[7343,2],[7501,2],[8034,2],[8153,2],[9210,2],[10268,2],[10413,2],[11048,2],[11182,2],[11293,2]]}}}],["贡献",{"_index":339,"t":{"41":{"position":[[578,2]]}}}],["资源",{"_index":232,"t":{"22":{"position":[[2638,2],[2909,2],[3217,2],[5355,2]]},"70":{"position":[[7,2],[156,2],[286,2],[444,2]]}}}],["赘述",{"_index":151,"t":{"16":{"position":[[178,2]]}}}],["超时",{"_index":384,"t":{"41":{"position":[[1294,2],[1972,2]]},"87":{"position":[[343,2],[373,2],[2215,2],[2245,2],[4023,2],[4053,2],[6003,2],[6051,2],[8605,2],[8653,2]]}}}],["路径",{"_index":137,"t":{"16":{"position":[[18,2]]},"59":{"position":[[41,2]]},"70":{"position":[[123,2],[230,2],[293,2],[451,2]]}}}],["身份",{"_index":274,"t":{"39":{"position":[[6,2]]}}}],["转化",{"_index":595,"t":{"87":{"position":[[10370,2],[11250,2]]}}}],["软件",{"_index":124,"t":{"12":{"position":[[6,2]]}}}],["轻松",{"_index":119,"t":{"10":{"position":[[378,2]]}}}],["较",{"_index":412,"t":{"57":{"position":[[161,1],[493,1],[1186,1],[1299,1],[1366,1],[1459,1],[1530,1],[1597,1],[1719,1],[2001,1]]},"68":{"position":[[1614,1],[1731,1],[1846,1],[1934,1],[2050,1],[2164,1],[2285,1],[2569,1]]},"84":{"position":[[164,1],[499,1],[1257,1],[1372,1],[1439,1],[1531,1],[1602,1],[1667,1],[1789,1],[2073,1]]}}}],["较为",{"_index":77,"t":{"8":{"position":[[232,2]]}}}],["达到",{"_index":68,"t":{"8":{"position":[[122,2]]}}}],["达成",{"_index":120,"t":{"10":{"position":[[389,2]]}}}],["过度",{"_index":53,"t":{"6":{"position":[[119,2]]}}}],["过程",{"_index":185,"t":{"16":{"position":[[3633,2],[3837,2]]},"18":{"position":[[457,2],[878,2]]},"89":{"position":[[121,2],[249,2],[472,2],[800,2]]}}}],["运行",{"_index":457,"t":{"68":{"position":[[270,2]]}}}],["返回",{"_index":442,"t":{"61":{"position":[[444,2],[1005,2],[1592,2],[2277,2],[2915,2]]},"87":{"position":[[9295,2],[9685,2],[10084,2],[11023,2]]}}}],["返回值",{"_index":520,"t":{"74":{"position":[[1841,3],[1906,3],[2525,3]]}}}],["还是",{"_index":237,"t":{"22":{"position":[[2723,2],[3003,2],[3317,2]]}}}],["这个",{"_index":508,"t":{"74":{"position":[[575,2],[1109,2],[1667,2],[2371,2]]}}}],["这些",{"_index":223,"t":{"22":{"position":[[2474,2]]}}}],["这方面",{"_index":130,"t":{"12":{"position":[[52,3]]}}}],["这里",{"_index":148,"t":{"16":{"position":[[173,2]]}}}],["进行",{"_index":202,"t":{"22":{"position":[[36,2]]},"32":{"position":[[113,2]]},"39":{"position":[[8,2],[149,2]]},"41":{"position":[[752,2],[839,2],[1284,2]]},"70":{"position":[[254,2]]},"87":{"position":[[179,2],[1978,2],[3823,2],[5105,2],[5763,2],[8365,2]]}}}],["连接",{"_index":277,"t":{"39":{"position":[[27,2],[151,2]]},"41":{"position":[[1970,2]]},"45":{"position":[[161,2]]},"49":{"position":[[74,2]]},"68":{"position":[[1390,2]]},"82":{"position":[[74,2]]},"87":{"position":[[192,2],[538,2],[743,2],[990,2],[1166,2],[1584,2],[1709,2],[1991,2],[2410,2],[2615,2],[2862,2],[3038,2],[3408,2],[3533,2],[3836,2],[4218,2],[4423,2],[4670,2],[4846,2],[5118,2],[5335,2],[5460,2],[5776,2],[6500,2],[6762,2],[7097,2],[7376,2],[7864,2],[8067,2],[8378,2],[9099,2],[9516,2],[9917,2],[10298,2],[10854,2],[11212,2]]}}}],["选",{"_index":168,"t":{"16":{"position":[[527,1]]},"41":{"position":[[6,1]]},"61":{"position":[[362,1],[923,1],[1510,1],[2187,1],[2828,1]]},"87":{"position":[[2038,1]]}}}],["选择",{"_index":160,"t":{"16":{"position":[[279,2],[1073,2],[2193,2]]},"22":{"position":[[2716,2],[2996,2],[3310,2],[5432,2],[5439,2],[5839,2],[5846,2],[6302,2],[6309,2]]},"32":{"position":[[102,2]]},"57":{"position":[[105,2],[232,2],[421,2],[585,2],[809,2],[979,2],[986,2],[1039,2]]},"59":{"position":[[194,2]]},"61":{"position":[[114,2],[676,2],[1258,2],[1860,2],[2501,2]]},"68":{"position":[[353,2],[1313,2],[1366,2],[1423,2]]},"84":{"position":[[108,2],[235,2],[427,2],[591,2],[818,2],[971,2],[1024,2],[1063,2]]},"87":{"position":[[3866,2],[5148,2]]}}}],["透明",{"_index":108,"t":{"10":{"position":[[327,2]]}}}],["通常",{"_index":224,"t":{"22":{"position":[[2480,2]]},"32":{"position":[[41,2]]},"59":{"position":[[141,2]]}}}],["通用",{"_index":382,"t":{"41":{"position":[[1080,2]]},"78":{"position":[[25,2]]}}}],["通知",{"_index":309,"t":{"41":{"position":[[402,2]]}}}],["通过",{"_index":138,"t":{"16":{"position":[[62,2],[3332,2]]},"18":{"position":[[32,2]]},"22":{"position":[[840,2],[1971,2],[2627,2],[2898,2],[3206,2],[3519,2],[4361,2],[4605,2],[4725,2],[4860,2]]},"41":{"position":[[397,2],[857,2]]},"57":{"position":[[1769,2],[2051,2]]},"59":{"position":[[76,2]]},"68":{"position":[[278,2],[2335,2],[2619,2]]},"72":{"position":[[32,2]]},"74":{"position":[[602,2],[1136,2],[1694,2],[2398,2]]},"78":{"position":[[41,2]]},"84":{"position":[[1839,2],[2123,2]]},"89":{"position":[[307,2]]}}}],["速率",{"_index":366,"t":{"41":{"position":[[875,2]]}}}],["造成",{"_index":326,"t":{"41":{"position":[[489,2]]}}}],["逻辑",{"_index":497,"t":{"74":{"position":[[5,2]]}}}],["遇到",{"_index":494,"t":{"72":{"position":[[223,2]]},"76":{"position":[[30,2]]}}}],["避免",{"_index":233,"t":{"22":{"position":[[2645,2],[2916,2],[3224,2]]}}}],["那么",{"_index":524,"t":{"74":{"position":[[1923,2]]}}}],["部分",{"_index":84,"t":{"8":{"position":[[271,2]]},"22":{"position":[[38,2]]},"68":{"position":[[1451,2]]},"84":{"position":[[1091,2]]}}}],["部署",{"_index":564,"t":{"78":{"position":[[187,2]]}}}],["都",{"_index":30,"t":{"2":{"position":[[233,1]]},"16":{"position":[[15,1],[522,1]]},"20":{"position":[[15,1]]},"41":{"position":[[1094,1],[1481,1],[1539,1]]},"59":{"position":[[38,1]]},"61":{"position":[[357,1],[918,1],[1505,1],[2182,1],[2823,1]]},"87":{"position":[[6398,1],[7712,1],[9000,1],[9275,1],[11113,1]]},"89":{"position":[[39,1]]}}}],["配合",{"_index":195,"t":{"18":{"position":[[1276,2]]}}}],["配置",{"_index":184,"t":{"16":{"position":[[3487,2],[3631,2],[3835,2]]},"18":{"position":[[151,2],[455,2],[876,2]]},"32":{"position":[[115,2]]},"41":{"position":[[2,2],[107,2],[616,2],[754,2],[833,2],[886,2],[1020,2],[1083,2],[1091,2],[1128,2],[1298,2],[1354,2],[1496,2],[2159,2]]},"57":{"position":[[1818,2],[1827,2],[2100,2],[2109,2]]},"68":{"position":[[2384,2],[2393,2],[2668,2],[2677,2]]},"70":{"position":[[38,2],[220,2],[256,2],[281,2],[439,2]]},"84":{"position":[[1888,2],[1897,2],[2172,2],[2181,2]]},"87":{"position":[[163,2],[174,2],[218,2],[345,2],[375,2],[1962,2],[1973,2],[2217,2],[2247,2],[3807,2],[3818,2],[4025,2],[4055,2],[5100,2],[5682,2],[5747,2],[5758,2],[5802,2],[6005,2],[6053,2],[8284,2],[8349,2],[8360,2],[8404,2],[8607,2],[8655,2]]},"89":{"position":[[119,2],[247,2],[470,2],[798,2]]}}}],["配置文件",{"_index":263,"t":{"32":{"position":[[12,4],[37,4]]},"37":{"position":[[22,4]]},"70":{"position":[[44,4],[97,4],[115,4],[249,4]]}}}],["里",{"_index":517,"t":{"74":{"position":[[695,1],[1228,1],[1802,1],[2493,1]]}}}],["重构",{"_index":293,"t":{"41":{"position":[[225,2]]}}}],["重载",{"_index":178,"t":{"16":{"position":[[1447,2],[2567,2]]}}}],["鉴",{"_index":163,"t":{"16":{"position":[[391,1],[1263,1],[2383,1]]},"61":{"position":[[226,1],[787,1],[1374,1],[2050,1],[2691,1]]}}}],["针对",{"_index":47,"t":{"6":{"position":[[83,2]]},"10":{"position":[[128,2]]},"14":{"position":[[19,2]]},"41":{"position":[[1037,2]]},"89":{"position":[[9,2]]}}}],["链接",{"_index":470,"t":{"68":{"position":[[536,2],[651,2],[779,2],[893,2],[1053,2],[1254,2]]}}}],["问题",{"_index":334,"t":{"41":{"position":[[544,2],[774,2]]},"76":{"position":[[37,2],[48,2],[74,2]]},"89":{"position":[[73,2]]}}}],["阻塞",{"_index":518,"t":{"74":{"position":[[1251,2],[1854,2],[2538,2]]},"87":{"position":[[7478,2],[8130,2],[9212,2],[9277,2],[11050,2],[11115,2]]}}}],["附件",{"_index":231,"t":{"22":{"position":[[2566,2]]}}}],["降低",{"_index":369,"t":{"41":{"position":[[897,2]]}}}],["限制",{"_index":371,"t":{"41":{"position":[[905,2]]},"68":{"position":[[1411,2],[1483,2]]},"84":{"position":[[1051,2],[1123,2]]}}}],["除了",{"_index":218,"t":{"22":{"position":[[2414,2]]}}}],["随便",{"_index":376,"t":{"41":{"position":[[925,2]]}}}],["随意",{"_index":479,"t":{"70":{"position":[[67,2]]}}}],["随着",{"_index":562,"t":{"78":{"position":[[178,2]]}}}],["隐藏",{"_index":244,"t":{"22":{"position":[[3723,2],[3924,2],[4193,2]]}}}],["需",{"_index":280,"t":{"39":{"position":[[44,1]]}}}],["需求",{"_index":222,"t":{"22":{"position":[[2467,2]]}}}],["需要",{"_index":157,"t":{"16":{"position":[[272,2],[281,2],[1066,2],[1075,2],[2186,2],[2195,2],[3352,2]]},"18":{"position":[[9,2]]},"22":{"position":[[2824,2],[3114,2],[3428,2],[5437,2],[5844,2],[6307,2]]},"41":{"position":[[759,2]]},"57":{"position":[[246,2],[599,2]]},"59":{"position":[[98,2]]},"61":{"position":[[107,2],[116,2],[669,2],[678,2],[1251,2],[1260,2],[1853,2],[1862,2],[2494,2],[2503,2]]},"68":{"position":[[100,2],[259,2],[1421,2]]},"72":{"position":[[23,2]]},"74":{"position":[[1910,2]]},"84":{"position":[[249,2],[605,2],[1061,2]]},"87":{"position":[[1329,2],[10167,2],[10323,2]]},"89":{"position":[[40,2]]}}}],["非",{"_index":521,"t":{"74":{"position":[[1853,1],[2537,1]]}}}],["非必要",{"_index":588,"t":{"87":{"position":[[2172,3]]}}}],["项",{"_index":378,"t":{"41":{"position":[[1022,1],[1085,1],[1093,1],[2161,1]]}}}],["项目",{"_index":35,"t":{"4":{"position":[[18,2]]},"6":{"position":[[17,2]]},"8":{"position":[[17,2]]},"10":{"position":[[24,2],[85,2]]},"32":{"position":[[65,2]]},"45":{"position":[[24,2],[107,2]]},"47":{"position":[[14,2]]},"49":{"position":[[20,2]]},"55":{"position":[[14,2]]},"64":{"position":[[150,2]]},"68":{"position":[[18,2],[37,2]]},"70":{"position":[[5,2],[133,2]]},"74":{"position":[[1927,2]]},"82":{"position":[[20,2]]}}}],["顾名思义",{"_index":380,"t":{"41":{"position":[[1028,4]]}}}],["预",{"_index":324,"t":{"41":{"position":[[479,1]]}}}],["预期",{"_index":308,"t":{"41":{"position":[[392,2]]},"76":{"position":[[33,2]]}}}],["预防",{"_index":493,"t":{"72":{"position":[[211,2]]}}}],["频率",{"_index":354,"t":{"41":{"position":[[767,2],[903,2]]}}}],["频道",{"_index":141,"t":{"16":{"position":[[106,2]]},"22":{"position":[[859,2]]},"41":{"position":[[602,2],[656,2],[703,2]]},"74":{"position":[[65,2]]},"76":{"position":[[14,2]]},"89":{"position":[[80,2],[261,2]]}}}],["额外",{"_index":65,"t":{"8":{"position":[[97,2]]},"41":{"position":[[1135,2]]},"68":{"position":[[92,2]]}}}],["风格",{"_index":56,"t":{"6":{"position":[[135,2]]},"8":{"position":[[170,2],[237,2]]},"10":{"position":[[146,2]]},"20":{"position":[[31,2]]},"70":{"position":[[137,2]]}}}],["风险",{"_index":372,"t":{"41":{"position":[[908,2]]}}}],["首先",{"_index":188,"t":{"18":{"position":[[7,2]]},"22":{"position":[[58,2]]},"66":{"position":[[0,2]]},"68":{"position":[[21,2]]},"78":{"position":[[127,2]]}}}],["验证",{"_index":443,"t":{"61":{"position":[[450,2],[1011,2],[1598,2],[2283,2],[2921,2]]}}}],["高级",{"_index":97,"t":{"10":{"position":[[221,2],[252,2]]}}}],["默认",{"_index":213,"t":{"22":{"position":[[853,2]]},"41":{"position":[[35,2],[714,2],[879,2],[1352,2],[1483,2],[1984,2],[2069,2]]},"57":{"position":[[1764,2],[2046,2]]},"68":{"position":[[2330,2],[2614,2]]},"70":{"position":[[299,2],[457,2]]},"84":{"position":[[1834,2],[2118,2]]},"87":{"position":[[215,2],[305,2],[2013,2],[2122,2],[3960,2],[5799,2],[5947,2],[6400,2],[7714,2],[8401,2],[8549,2],[9002,2]]}}}],["默认值",{"_index":373,"t":{"41":{"position":[[912,3]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file diff --git a/search/index.html b/search/index.html index 98f8ab6f..7c4335de 100644 --- a/search/index.html +++ b/search/index.html @@ -4,13 +4,13 @@ 搜索文档 - +

搜索文档

- + \ No newline at end of file