1"use strict";(self.webpackChunknonebot=self.webpackChunknonebot||[]).push([["1201"],{83150(e,n,l){l.r(n),l.d(n,{metadata:()=>r,default:()=>u,frontMatter:()=>a,contentTitle:()=>o,toc:()=>h,assets:()=>c});var r=JSON.parse('{"id":"developer/plugin-publishing","title":"\u53D1\u5E03\u63D2\u4EF6","description":"\u5728\u5546\u5E97\u53D1\u5E03\u81EA\u5DF1\u7684\u63D2\u4EF6","source":"@site/versioned_docs/version-2.4.4/developer/plugin-publishing.mdx","sourceDirName":"developer","slug":"/developer/plugin-publishing","permalink":"/docs/2.4.4/developer/plugin-publishing","draft":false,"unlisted":false,"editUrl":"https://github.com/nonebot/nonebot2/edit/master/website/versioned_docs/version-2.4.4/developer/plugin-publishing.mdx","tags":[],"version":"2.4.4","lastUpdatedBy":"StarHeart","lastUpdatedAt":1785574664000,"sidebarPosition":0,"frontMatter":{"sidebar_position":0,"description":"\u5728\u5546\u5E97\u53D1\u5E03\u81EA\u5DF1\u7684\u63D2\u4EF6"},"sidebar":"tutorial","previous":{"title":"\u8F7B\u91CF\u5316 HTML \u7ED8\u56FE","permalink":"/docs/2.4.4/best-practice/htmlkit-render"},"next":{"title":"\u7F16\u5199\u9002\u914D\u5668","permalink":"/docs/2.4.4/developer/adapter-writing"}}'),i=l(62540),s=l(43023),t=l(36031),d=l(84993);let a={sidebar_position:0,description:"\u5728\u5546\u5E97\u53D1\u5E03\u81EA\u5DF1\u7684\u63D2\u4EF6"},o="\u53D1\u5E03\u63D2\u4EF6",c={},h=[{value:"\u51C6\u5907\u5DE5\u4F5C",id:"\u51C6\u5907\u5DE5\u4F5C",level:2},{value:"\u63D2\u4EF6\u547D\u540D\u89C4\u8303",id:"\u63D2\u4EF6\u547D\u540D\u89C4\u8303",level:3},{value:"\u9879\u76EE\u7ED3\u6784",id:"\u9879\u76EE\u7ED3\u6784",level:3},{value:"\u4ECE\u9879\u76EE\u6A21\u677F\u5F00\u59CB",id:"\u4ECE\u9879\u76EE\u6A21\u677F\u5F00\u59CB",level:3},{value:"1. \u521B\u5EFA\u9879\u76EE",id:"1-\u521B\u5EFA\u9879\u76EE",level:4},{value:"2. \u914D\u7F6E\u53D1\u5E03\u6743\u9650",id:"2-\u914D\u7F6E\u53D1\u5E03\u6743\u9650",level:4},{value:"3. \u5168\u5C40\u66FF\u6362\u9879\u76EE\u4FE1\u606F",id:"3-\u5168\u5C40\u66FF\u6362\u9879\u76EE\u4FE1\u606F",level:4},{value:"4. \u5B89\u88C5\u4F9D\u8D56\u4E0E\u5F00\u53D1",id:"4-\u5B89\u88C5\u4F9D\u8D56\u4E0E\u5F00\u53D1",level:4},{value:"5. \u66F4\u65B0\u7248\u672C\u5E76\u53D1\u5E03",id:"5-\u66F4\u65B0\u7248\u672C\u5E76\u53D1\u5E03",level:4},{value:"6. \u53D1\u5E03\u5230 PyPI",id:"6-\u53D1\u5E03\u5230-pypi",level:4},{value:"\u57FA\u672C\u8981\u6C42",id:"\u57FA\u672C\u8981\u6C42",level:2},{value:"\u80FD\u591F\u6B63\u786E\u52A0\u8F7D",id:"\u80FD\u591F\u6B63\u786E\u52A0\u8F7D",level:3},{value:"\u4F9D\u8D56\u5176\u4ED6\u63D2\u4EF6",id:"\u4F9D\u8D56\u5176\u4ED6\u63D2\u4EF6",level:4},{value:"\u4E0D\u80FD\u96F6\u914D\u7F6E\u52A0\u8F7D\u7684\u63D2\u4EF6",id:"\u4E0D\u80FD\u96F6\u914D\u7F6E\u52A0\u8F7D\u7684\u63D2\u4EF6",level:4},{value:"\u63D2\u4EF6\u5143\u6570\u636E",id:"\u63D2\u4EF6\u5143\u6570\u636E",level:3},{value:"\u7EE7\u627F\u5176\u4ED6\u63D2\u4EF6\u652F\u6301\u7684\u9002\u914D\u5668",id:"\u7EE7\u627F\u5176\u4ED6\u63D2\u4EF6\u652F\u6301\u7684\u9002\u914D\u5668",level:4},{value:"\u51C6\u5907\u9879\u76EE\u4E3B\u9875",id:"\u51C6\u5907\u9879\u76EE\u4E3B\u9875",level:3},{value:"\u8D28\u91CF\u8981\u6C42",id:"\u8D28\u91CF\u8981\u6C42",level:2},{value:"\u4F9D\u8D56\u7BA1\u7406\u539F\u5219",id:"\u4F9D\u8D56\u7BA1\u7406\u539F\u5219",level:3},{value:"\u907F\u514D\u8BEF\u7528\u540C\u6B65\u64CD\u4F5C",id:"\u907F\u514D\u8BEF\u7528\u540C\u6B65\u64CD\u4F5C",level:3},{value:"\u672C\u5730\u6587\u4EF6\u5B58\u50A8",id:"\u672C\u5730\u6587\u4EF6\u5B58\u50A8",level:3},{value:"\u5546\u5E97\u5BA1\u6838",id:"\u5546\u5E97\u5BA1\u6838",level:2},{value:"\u63D0\u4EA4\u7533\u8BF7",id:"\u63D0\u4EA4\u7533\u8BF7",level:3},{value:"\u7B49\u5F85\u63D2\u4EF6\u5BA1\u6838",id:"\u7B49\u5F85\u63D2\u4EF6\u5BA1\u6838",level:3}];function p(e){let n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"\u53D1\u5E03\u63D2\u4EF6",children:"\u53D1\u5E03\u63D2\u4EF6"})}),"\n","\n",(0,i.jsxs)(n.p,{children:["NoneBot \u4E3A\u5F00\u53D1\u8005\u63D0\u4F9B\u4E86\u5206\u4EAB\u63D2\u4EF6\u7684\u5B98\u65B9\u5546\u5E97\u3002\u672C\u6307\u5357\u56CA\u62EC",(0,i.jsx)(n.strong,{children:"\u4ECE\u521B\u5EFA\u9879\u76EE\u5230\u53D1\u5E03\u5230 PyPI\uFF0C\u6700\u7EC8\u63D0\u4EA4\u5546\u5E97\u5BA1\u6838"}),"\u7684\u5168\u8FC7\u7A0B\u3002"]}),"\n",(0,i.jsxs)(n.admonition,{title:"\u8B66\u544A",type:"warning",children:[(0,i.jsxs)(n.p,{children:["\u5982\u679C\u4F60\u7684\u63D2\u4EF6\u53EA\u662F\u6EE1\u8DB3\u81EA\u7528\u9700\u6C42\uFF0C\u5219\u5B8C\u5168\u53EF\u4EE5\u9009\u62E9",(0,i.jsx)(n.strong,{children:"\u4E0D\u53D1\u5E03\u63D2\u4EF6"}),"\u3002\u53D1\u5E03\u63D2\u4EF6",(0,i.jsx)(n.strong,{children:"\u4E0D\u662F"}),"\u4F7F\u7528\u63D2\u4EF6\u7684\u5FC5\u8981\u6761\u4EF6\u3002"]}),(0,i.jsx)(n.p,{children:"NoneBot \u793E\u533A\u5BF9\u4E8E\u63D2\u4EF6\u6709\u4E00\u5B9A\u8D28\u91CF\u8981\u6C42\uFF0C\u5BF9\u4E8E\u4E0D\u7B26\u5408\u8981\u6C42\u7684\u63D2\u4EF6\uFF0C\u793E\u533A\u6210\u5458\u5C06\u4F1A\u8981\u6C42\u4FEE\u6539\uFF0C\u76F4\u81F3\u7B26\u5408\u8981\u6C42\u540E\u624D\u80FD\u901A\u8FC7\u5BA1\u6838\uFF1B\u5982\u679C\u957F\u671F\u672A\u66F4\u65B0\u4FEE\u6539\uFF0C\u793E\u533A\u5C06\u4F1A\u5173\u95ED\u5F53\u524D\u8BF7\u6C42\uFF0C\u4E4B\u540E\u5982\u9700\u53D1\u5E03\u8BF7\u91CD\u65B0\u63D0\u4EA4\u53D1\u5E03\u63D2\u4EF6\u8BF7\u6C42\u3002\u76F8\u5E94\u7684\u8981\u6C42\u4F1A\u5728\u672C\u7AE0\u8282\u4EE5\u4E0B\u90E8\u5206\u4ECB\u7ECD\u3002"})]}),"\n",(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsx)(n.p,{children:"\u672C\u7AE0\u8282\u4EC5\u5305\u542B\u63D2\u4EF6\u53D1\u5E03\u6D41\u7A0B\u6307\u5BFC\uFF0C\u63D2\u4EF6\u5F00\u53D1\u8BF7\u67E5\u9605\u524D\u8FF0\u7AE0\u8282\u3002"})}),"\n",(0,i.jsx)(n.h2,{id:"\u51C6\u5907\u5DE5\u4F5C",children:"\u51C6\u5907\u5DE5\u4F5C"}),"\n",(0,i.jsx)(n.h3,{id:"\u63D2\u4EF6\u547D\u540D\u89C4\u8303",children:"\u63D2\u4EF6\u547D\u540D\u89C4\u8303"}),"\n",(0,i.jsx)(n.p,{children:"NoneBot \u63D2\u4EF6\u4F7F\u7528\u4E0B\u8FF0\u547D\u540D\u89C4\u8303\uFF1A"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\u5BF9\u4E8E",(0,i.jsx)(n.strong,{children:"\u9879\u76EE\u540D"}),"\uFF0C\u5EFA\u8BAE\u7EDF\u4E00\u4EE5 ",(0,i.jsx)(n.code,{children:"nonebot-plugin-"})," \u5F00\u5934\uFF0C\u4E4B\u540E\u4E3A\u62DF\u5B9A\u7684\u63D2\u4EF6\u540D\u5B57\uFF0C\u8BCD\u95F4\u7528\u6A2A\u6760 ",(0,i.jsx)(n.code,{children:"-"})," \u5206\u9694\uFF1B","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u9879\u76EE\u540D"}
1),"\u7528\u4E8E\u4EE3\u7801\u4ED3\u5E93\u540D\u79F0\u3001PyPI \u5305\u7684\u53D1\u5E03\u540D\u79F0\u7B49\uFF1B"]}),"\n",(0,i.jsxs)(n.li,{children:["\u672C\u6587\u4F7F\u7528 ",(0,i.jsx)(n.code,{children:"nonebot-plugin-{your-plugin-name}"})," \u4E3A\u4F8B\u3002"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\u5BF9\u4E8E",(0,i.jsx)(n.strong,{children:"\u6A21\u5757\u540D"}),"\uFF0C\u5EFA\u8BAE\u4E0E",(0,i.jsx)(n.strong,{children:"\u9879\u76EE\u540D"}),"\u4E00\u81F4\uFF0C\u4F46\u8BCD\u95F4\u7528\u4E0B\u5212\u7EBF ",(0,i.jsx)(n.code,{children:"_"})," \u5206\u9694\uFF0C\u5373\u7EDF\u4E00\u4EE5 ",(0,i.jsx)(n.code,{children:"nonebot_plugin_"})," \u5F00\u5934\uFF0C\u4E4B\u540E\u4E3A\u62DF\u5B9A\u7684\u63D2\u4EF6\u540D\u5B57\uFF1B","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u6A21\u5757\u540D"}),"\u7528\u4E8E\u7A0B\u5E8F\u5BFC\u5165\u4F7F\u7528\uFF0C\u5E94\u4E3A\u63D2\u4EF6\u6587\u4EF6\uFF08\u5939\uFF09\u7684\u540D\u79F0\uFF1B"]}),"\n",(0,i.jsxs)(n.li,{children:["\u672C\u6587\u4F7F\u7528 ",(0,i.jsx)(n.code,{children:"nonebot_plugin_{your_plugin_name}"})," \u4E3A\u4F8B\u3002"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"\u9879\u76EE\u7ED3\u6784",children:"\u9879\u76EE\u7ED3\u6784"}),"\n",(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsx)(n.p,{children:"\u672C\u6BB5\u6240\u8FF0\u7684\u9879\u76EE\u7ED3\u6784\u4EC5\u4F5C\u63A8\u8350\uFF0C\u4E0D\u505A\u5F3A\u5236\u8981\u6C42\u3002"})}),"\n",(0,i.jsxs)(n.p,{children:["\u63D2\u4EF6\u7A0B\u5E8F\u672C\u8EAB\u7ED3\u6784\u53EF\u53C2\u8003",(0,i.jsx)(n.a,{href:"/docs/2.4.4/tutorial/create-plugin#%E6%8F%92%E4%BB%B6%E7%BB%93%E6%9E%84",children:"\u63D2\u4EF6\u7ED3\u6784"}),"\u4E00\u8282\uFF0C\u552F\u4E00\u533A\u522B\u5728\u4E8E\uFF0C\u63D2\u4EF6\u5305\u53EF\u4EE5\u76F4\u63A5\u5904\u4E8E\u9879\u76EE\u9876\u5C42\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u63D2\u4EF6\u9879\u76EE\u7684\u4E00\u79CD\u7EC4\u7EC7\u7ED3\u6784\u5982\u4E0B\uFF1A"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tree",children:"\u{1F4E6} nonebot-plugin-{your-plugin-name}\n\u251C\u2500\u2500 \u{1F4C2} nonebot_plugin_{your_plugin_name}\n\u2502 \u251C\u2500\u2500 \u{1F4DC} __init__.py\n\u2502 \u2514\u2500\u2500 \u{1F4DC} config.py\n\u251C\u2500\u2500 \u{1F4DC} pyproject.toml\n\u2514\u2500\u2500 \u{1F4DC} README.md\n"})}),"\n",(0,i.jsxs)(n.p,{children:["\u529F\u80FD\u5F00\u53D1\u53EF\u4EE5\u5728 ",(0,i.jsx)(n.code,{children:"__init__.py"})," \u4E2D\u8FDB\u884C\u6216\u5728\u5305\u5185\u90E8\u521B\u5EFA\u5176\u4ED6\u6A21\u5757\u5E76\u5728 ",(0,i.jsx)(n.code,{children:"__init__.py"})," \u4E2D\u5BFC\u5165\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u4ECE\u9879\u76EE\u6A21\u677F\u5F00\u59CB",children:"\u4ECE\u9879\u76EE\u6A21\u677F\u5F00\u59CB"}),"\n",(0,i.jsx)(n.p,{children:"\u4E3A\u964D\u4F4E\u65B0\u624B\u95E8\u69DB\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E09\u6761\u6E05\u6670\u3001\u5B8C\u6574\u3001\u53EF\u590D\u5236\u7684\u53D1\u5E03\u8DEF\u5F84\u3002"}),"\n",(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsxs)(n.p,{children:["\u4F60\u53EA\u9700\u9009\u62E9\u4E00\u6761\u4E0E\u4F60\u4E60\u60EF\u4E00\u81F4\u7684\u8DEF\u5F84\uFF0C",(0,i.jsx)(n.strong,{children:"\u5B8C\u6574\u8DDF\u968F\u5373\u53EF\u6210\u529F\u53D1\u5E03"}),"\u3002\u65E0\u9700\u5728\u4E0D\u540C\u5DE5\u5177\u95F4\u5207\u6362\u6216\u731C\u6D4B\u914D\u7F6E\u3002"]})}),"\n",(0,i.jsx)(n.p,{children:"NoneBot \u751F\u6001\u76EE\u524D\u6709\u5982\u4E0B\u63D2\u4EF6\u9879\u76EE\u6A21\u677F\uFF1A"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://github.com/RF-Tar-Railt/nonebot-plugin-template",children:"RF-Tar-Railt/nonebot-plugin-template"})}),"\n",(0,i.jsxs)(n.p,{children:["\u6B64\u8DEF\u5F84\u4F7F\u7528 ",(0,i.jsx)(n.strong,{children:"PDM"})," \u9879\u76EE\u7BA1\u7406\u5668\uFF0C\u7B26\u5408 PEP 621 \u6807\u51C6\uFF0C\u81EA\u52A8\u5316\u7A0B\u5EA6\u9AD8\u3002"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://github.com/fllesser/nonebot-plugin-template",children:"fllesser/nonebot-plugin-template"})}),"\n",(0,i.jsxs)(n.p,{children:["\u6B64\u8DEF\u5F84\u4F7F\u7528 ",(0,i.jsx)(n.strong,{children:"uv"})," \u9879\u76EE\u7BA1\u7406\u5668\u548C ",(0,i.jsx)(n.strong,{children:"PoeThePoet"})," \u4EFB\u52A1\u8FD0\u884C\u5668\uFF0C\u6784\u5EFA\u901F\u5EA6\u5FEB\uFF0C\u9002\u5408\u8FFD\u6C42\u6548\u7387\u7684\u5F00\u53D1\u8005\u3002"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://github.com/A-kirami/nonebot-plugin-template",children:"A-kirami/nonebot-plugin-template"})}),"\n",(0,i.jsxs)(n.p,{children:["\u6B64\u8DEF\u5F84\u4F7F\u7528 ",(0,i.jsx)(n.strong,{children:"Poetry"})," \u9879\u76EE\u7BA1\u7406\u5668\uFF0C\u9002\u5408\u719F\u6089\u4F20\u7EDF Python \u751F\u6001\u7684\u5F00\u53D1\u8005\u3002"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"1-\u521B\u5EFA\u9879\u76EE",children:"1. \u521B\u5EFA\u9879\u76EE"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"\u8BBF\u95EE\u4E0A\u8FF0\u4E09\u4E2A\u6A21\u677F\u4E4B\u4E00\u3002"}),"\n",(0,i.jsxs)(n.li,{children:["\u70B9\u51FB ",(0,i.jsx)(n.strong,{children:"\u201CUse this template\u201D"})," \u2192 ",(0,i.jsx)(n.strong,{children:"\u201CCreate a new repository\u201D"}),"\u3002"]}),"\n",(0,i.jsxs)(n.li,{children:["\u4ED3\u5E93\u540D\u79F0\u586B\u5199\uFF1A",(0,i.jsx)(n.code,{children:"nonebot-plugin-{your-plugin-name}"}),"\uFF08\u6B64\u90E8\u5206\u4EE5 ",(0,i.jsx)(n.code,{children:"nonebot-plugin-weather"})," \u4E3A\u4F8B\uFF09\u3002"]}),"\n",(0,i.jsxs)(n.li,{children:["\u70B9\u51FB ",(0,i.jsx)(n.strong,{children:"\u201CCreate repository from template\u201D"}),"\u3002"]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"2-\u914D\u7F6E\u53D1\u5E03\u6743\u9650",children:"2. \u914D\u7F6E\u53D1\u5E03\u6743\u9650"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\u8FDB\u5165\u65B0\u4ED3\u5E93 \u2192 ",(0,i.jsx)(n.strong,{children:"Settings"})," \u2192 ",(0,i.jsx)(n.strong,{children:"Actions"})," \u2192 ",(0,i.jsx)(n.strong,{children:"General"}),"\u3002"]}),"\n",(0,i.jsxs)(n.li,{children:["\u5728 ",(0,i.jsx)(n.strong,{children:"Workflow permissions"})," \u4E0B\uFF0C\u52FE\u9009 ",(0,i.jsx)(n.strong,{children:"\u201CRead and write permissions\u201D"})," \u2192 \u70B9\u51FB ",(0,i.jsx)(n.strong,{children:"Save"}),"\u3002"]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"3-\u5168\u5C40\u66FF\u6362\u9879\u76EE\u4FE1\u606F",children:"3. \u5168\u5C40\u66FF\u6362\u9879\u76EE\u4FE1\u606F"}),"\n",(0,i.jsxs)(n.p,{children:["\u5728\u4ED3\u5E93\u4E2D\u70B9\u51FB ",(0,i.jsx)(n.strong,{children:"\u201CAdd file\u201D"})," \u2192 ",(0,i.jsx)(n.strong,{children:"\u201CCreate new file\u201D"}),"\uFF0C\u521B\u5EFA\u4E00\u4E2A\u7A7A\u6587\u4EF6 ",(0,i.jsx)(n.code,{children:"LICENSE"}),"\uFF0C\u9009\u62E9\u5F00\u6E90\u534F\u8BAE\u5E76\u63D0\u4EA4\uFF08\u6B64\u64CD\u4F5C\u4F1A\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF09\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u7136\u540E\u5728\u672C\u5730\u514B\u9686\u4ED3\u5E93\uFF0C\u4F7F\u7528\u7F16\u8F91\u5668\u5BF9\u4EE5\u4E0B\u5185\u5BB9\u8FDB\u884C",(0,i.jsx)(n.strong,{children:"\u5168\u5C40\u66FF\u6362"}),"\uFF1A"]}),"\n",(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsx)(n.p,{children:"\u6B64\u90E8\u5206\u4EE5\u201C\u5929\u6C14\u63D2\u4EF6\u201D\u4E3A\u4F8B\uFF0C\u5B9E\u9645\u7684\u66FF\u6362\u5185\u5BB9\u5E94\u8BE5\u6839\u636E\u4F60\u6240\u521B\u5EFA\u7684\u63D2\u4EF6\u540D\u79F0\u7B49\u76F8\u5E94\u8C03\u6574\u3002"})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"\u539F\u5185\u5BB9"}),(0,i.jsx)(n.th,{children:"\u66FF\u6362\u4E3A"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"nonebot-plugin-template"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"nonebot-plugin-weather"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"nonebot_plugin_template"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"nonebot_plugin_weather"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"<your_plugin_humanized_name>"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"\u5929\u6C14\u67E5\u8BE2"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"<your_plugin_description>"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"\u67E5\u8BE2\u6307\u5B9A\u57CE\u5E02\u7684\u5B9E\u65F6\u5929\u6C14\u4E0E\u672A\u6765\u9884\u62A5"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"<your_github>"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"\u4F60\u7684GitHub\u7528\u6237\u540D"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"<your_email>"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"\u4F60\u7684\u90AE\u7BB1"})})]})]})]}),"\n",(0,i.jsx)(n.h4,{id:"4-\u5B89\u88C5\u4F9D\u8D56\u4E0E\u5F00\u53D1",children:"4. \u5B89\u88C5\u4F9D\u8D56\u4E0E\u5F00\u53D1"}),"\n",(0,i.jsxs)(t.A,{groupId:"publish-path",defaultValue:"pdm",values:[{label:"PDM + RF-Tar-Railt \u6A21\u677F",value:"pdm"},{label:"uv + fllesser \u6A21\u677F",value:"uv"},{label:"Poetry + A-kirami \u6A21\u677F",value:"poetry"}],children:[(0,i.jsx)(d.A,{value:"pdm",label:"PDM + RF-Tar-Railt \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u5B89\u88C5 PDM\uFF08\u82E5\u672A\u5B89\u88C5\uFF09\ncurl -sSL https://pdm-project.org/install-pdm.py | python3 -\n\n# \u5B89\u88C5\u9879\u76EE\u4F9D\u8D56\uFF08\u81EA\u52A8\u521B\u5EFA\u865A\u62DF\u73AF\u5883\uFF09\npdm sync\n\n# \u6DFB\u52A0\u65B0\u4F9D\u8D56\uFF08\u5982 httpx\uFF09\npdm add httpx\n"})})}),(0,i.jsx)(d.A,{value:"uv",label:"uv + fllesser \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# \u5B89\u88C5 uv\uFF08Windows\uFF09\npowershell -c "irm https://astral.sh/uv/install.ps1 | iex"\n\n# \u5B89\u88C5 uv\uFF08macOS/Linux\uFF09\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# \u5B89\u88C5\u6240\u6709\u4F9D\u8D56\uFF08\u542B dev\uFF09\nuv sync --all-groups -p 3.12\n\n# \u6DFB\u52A0\u65B0\u4F9D\u8D56\nuv add httpx\n'})})}),(0,i.jsx)(d.A,{value:"poetry",label:"Poetry + A-kirami \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u5B89\u88C5 Poetry\uFF08\u63A8\u8350\u65B9\u5F0F\uFF09\ncurl -sSL https://install.python-poetry.org | python3 -\n\n# \u5B89\u88C5\u9879\u76EE\u4F9D\u8D56\npoetry install\n\n# \u6DFB\u52A0\u65B0\u4F9D\u8D56\npoetry add httpx\n"})})})]}),"\n",(0,i.jsx)(n.h4,{id:"5-\u66F4\u65B0\u7248\u672C\u5E76\u53D1\u5E03",children:"5. \u66F4\u65B0\u7248\u672C\u5E76\u53D1\u5E03"}),"\n",(0,i.jsxs)(t.A,{groupId:"publish-path-bump",defaultValue:"bump-my-version",values:[{label:"\u4F7F\u7528 bump-my-version",value:"bump-my-version"},{label:"\u4F7F\u7528\u9879\u76EE\u7BA1\u7406\u5668",value:"bump-manager"},{label:"\u624B\u52A8\u66F4\u65B0\u7248\u672C",value:"bump-manual"}],children:[(0,i.jsxs)(d.A,{value:"bump-my-version",label:"\u4F7F\u7528 bump-my-version",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://github.com/callowayproject/bump-my-version",children:"bump-my-version"}
1)," \u662F\u4E00\u4E2A\u529F\u80FD\u5F3A\u5927\u3001\u53EF\u914D\u7F6E\u7684 Python \u9879\u76EE\u7248\u672C\u66F4\u65B0\u5DE5\u5177\uFF0C\u652F\u6301\u81EA\u52A8\u63D0\u4EA4\u5230 Git \u7B49 VCS\u3002"]}),(0,i.jsxs)(t.A,{groupId:"publish-path",defaultValue:"pdm",values:[{label:"PDM + RF-Tar-Railt \u6A21\u677F",value:"pdm"},{label:"uv + fllesser \u6A21\u677F",value:"uv"},{label:"Poetry + A-kirami \u6A21\u677F",value:"poetry"}],children:[(0,i.jsx)(d.A,{value:"pdm",label:"PDM + RF-Tar-Railt \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u5B89\u88C5 bump-my-version\npdm add --dev bump-my-version\n\n# \u66F4\u65B0 patch \u7248\u672C\npdm run bump patch\n\n# \u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\ngit push origin --tags\n"})})}),(0,i.jsx)(d.A,{value:"uv",label:"uv + fllesser \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u66F4\u65B0 patch \u7248\u672C\nuv run poe bump patch\n\n# \u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\ngit push origin --tags\n"})})}),(0,i.jsx)(d.A,{value:"poetry",label:"Poetry + A-kirami \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u5B89\u88C5 bump-my-version\npoetry add --dev bump-my-version\n\n# \u66F4\u65B0 patch \u7248\u672C\npoetry run bump patch\n\n# \u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\ngit push origin --tags\n"})})})]})]}),(0,i.jsx)(d.A,{value:"bump-manager",label:"\u4F7F\u7528\u9879\u76EE\u7BA1\u7406\u5668",children:(0,i.jsxs)(t.A,{groupId:"publish-path",defaultValue:"pdm",values:[{label:"PDM + RF-Tar-Railt \u6A21\u677F",value:"pdm"},{label:"uv + fllesser \u6A21\u677F",value:"uv"},{label:"Poetry + A-kirami \u6A21\u677F",value:"poetry"}],children:[(0,i.jsxs)(d.A,{value:"pdm",label:"PDM + RF-Tar-Railt \u6A21\u677F",children:[(0,i.jsxs)(n.p,{children:["\u9700\u8981\u5B89\u88C5 PDM \u63D2\u4EF6 ",(0,i.jsx)(n.a,{href:"https://github.com/carstencodes/pdm-bump",children:"pdm-bump"}),"\u3002"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u5B89\u88C5 pdm-bump\npdm self add pdm-bump\n\n# \u66F4\u65B0 patch \u7248\u672C\npdm bump patch\n\n# \u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\ngit push origin --tags\n"})})]}),(0,i.jsx)(d.A,{value:"uv",label:"uv + fllesser \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# \u66F4\u65B0 patch \u7248\u672C\nuv version --bump patch\n\n# \u521B\u5EFA\u76F8\u5E94\u63D0\u4EA4\u4E0E\u6807\u7B7E\ngit add pyproject.toml\ngit commit -m "chore: release v0.1.1" # \u66FF\u6362\u4E3A\u5B9E\u9645\u7684\u7248\u672C\u53F7\ngit tag v0.1.1 # \u66FF\u6362\u4E3A\u5B9E\u9645\u7684\u7248\u672C\u53F7\n\n# \u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\ngit push origin --tags\n'})})}),(0,i.jsx)(d.A,{value:"poetry",label:"Poetry + A-kirami \u6A21\u677F",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# \u66F4\u65B0\u7248\u672C\uFF08\u81EA\u52A8\u63D0\u4EA4\u5E76\u6253\u6807\u7B7E\uFF09\npoetry version patch\n\n# \u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\ngit push origin --tags\n"})})})]})}),(0,i.jsxs)(d.A,{value:"bump-manual",label:"\u624B\u52A8\u66F4\u65B0\u7248\u672C",children:[(0,i.jsxs)(n.p,{children:["\u624B\u52A8\u66F4\u65B0 ",(0,i.jsx)(n.code,{children:"pyproject.toml"})," \u4E2D\u7684 ",(0,i.jsx)(n.code,{children:"version"})," \u5B57\u6BB5\uFF0C\u7136\u540E\u63A8\u9001 tag \u89E6\u53D1\u53D1\u5E03\u5DE5\u4F5C\u6D41"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'git add pyproject.toml\ngit commit -m "chore: release v0.1.1" # \u66FF\u6362\u4E3A\u5B9E\u9645\u7684\u7248\u672C\u53F7\ngit tag v0.1.1 # \u66FF\u6362\u4E3A\u5B9E\u9645\u7684\u7248\u672C\u53F7\ngit push origin --tags\n'})})]})]}),"\n",(0,i.jsxs)(n.p,{children:["\u63A8\u9001 ",(0,i.jsx)(n.code,{children:"v*"})," \u6807\u7B7E\u540E\uFF0C\u6A21\u677F\u63D0\u4F9B\u7684 GitHub Actions \u5DE5\u4F5C\u6D41\u5C06\u81EA\u52A8\u6784\u5EFA\u5E76\u53D1\u5E03\u5230 PyPI\u3002"]}),"\n",(0,i.jsxs)(n.h4,{id:"6-\u53D1\u5E03\u5230-pypi",children:["6. \u53D1\u5E03\u5230 ",(0,i.jsx)(n.a,{href:"https://pypi.org",children:"PyPI"})]}),"\n",(0,i.jsxs)(t.A,{groupId:"publish-method",defaultValue:"template",values:[{label:"\u4F7F\u7528\u6A21\u677F\u7684\u81EA\u52A8\u53D1\u5E03\u5DE5\u4F5C\u6D41",value:"template"},{label:"\u624B\u52A8\u53D1\u5E03",value:"manual"}],children:[(0,i.jsx)(d.A,{value:"template",label:"\u4F7F\u7528\u6A21\u677F\u7684\u81EA\u52A8\u53D1\u5E03\u5DE5\u4F5C\u6D41",children:(0,i.jsx)(n.p,{children:"\u4E0D\u540C\u6A21\u677F\u4F7F\u7528\u7684\u53D1\u5E03\u65B9\u5F0F\u53EF\u80FD\u4E0D\u540C\uFF0C\u5177\u4F53\u9
114D\u7F6E\u6D41\u7A0B\u53C2\u8003\u5BF9\u5E94\u6A21\u677F\u7684\u8BE6\u7EC6\u4F7F\u7528\u6307\u5357\u3002"})}),(0,i.jsxs)(d.A,{value:"manual",label:"\u624B\u52A8\u53D1\u5E03",children:[(0,i.jsxs)(n.p,{children:["\u6839\u636E\u9009\u7528\u7684\u6784\u5EFA\u7CFB\u7EDF\uFF0C\u5728\u9879\u76EE\u7684 ",(0,i.jsx)(n.code,{children:"pyproject.toml"})," \u4E2D\u586B\u5165\u5FC5\u8981\u4FE1\u606F\u540E\u8FDB\u884C\u6784\u5EFA\u4E0E\u53D1\u5E03\u3002"]}),(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsxs)(n.p,{children:["\u4E0D\u540C\u6784\u5EFA\u5DE5\u5177\u7684\u4F7F\u7528\u53EF\u80FD\u5B58\u5728\u5DEE\u522B\u3002\u672C\u6587\u4EC5\u4EE5 ",(0,i.jsx)(n.a,{href:"https://pdm-project.org/zh/latest/",children:(0,i.jsx)(n.code,{children:"pdm"})}),",\n",(0,i.jsx)(n.a,{href:"https://python-poetry.org/docs/",children:(0,i.jsx)(n.code,{children:"poetry"})}),", ",(0,i.jsx)(n.a,{href:"https://setuptools.pypa.io/en/latest/",children:(0,i.jsx)(n.code,{children:"setuptools"})}),"\n\u6784\u5EFA\u7CFB\u7EDF",(0,i.jsx)(n.strong,{children:"\u672C\u5730\u6784\u5EFA\u4E0E\u53D1\u5E03"}),"\u4E3A\u793A\u4F8B\u8BB2\u89E3\uFF0C\u5176\u4F59\u6784\u5EFA/\u7BA1\u7406\u5DE5\u5177\u7B49\u548C\u81EA\u52A8\u5316\u6784\u5EFA\u7684\u7528\u6CD5\u8BF7\u8BFB\u8005\u81EA\u884C\u63A2\u7D22\u3002"]})}),(0,i.jsxs)(t.A,{groupId:"publishMethod",children:[(0,i.jsx)(d.A,{value:"poetry",label:"Poetry",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"poetry publish --build # \u6784\u5EFA\u5E76\u53D1\u5E03\n\n# \u7B49\u6548\u4E8E\u4EE5\u4E0B\u4E24\u4E2A\u547D\u4EE4\npoetry build # \u53EA\u6784\u5EFA\npoetry publish # \u53EA\u53D1\u5E03\u5148\u524D\u7684\u6784\u5EFA\n"})})}),(0,i.jsx)(d.A,{value:"pdm",label:"PDM",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"pdm publish # \u6784\u5EFA\u5E76\u53D1\u5E03\n\n# \u7B49\u6548\u4E8E\u4EE5\u4E0B\u4E24\u4E2A\u547D\u4EE4\npdm build # \u53EA\u6784\u5EFA\npdm publish --no-build # \u53EA\u53D1\u5E03\u5148\u524D\u7684\u6784\u5EFA\n"})})}),(0,i.jsx)(d.A,{value:"setuptools",label:"Setuptools (PEP 517)",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"pip install build twine # \u5B89\u88C5\u901A\u7528\u6784\u5EFA\u4E0E\u53D1\u5E03\u5DE5\u5177\n\npython -m build --sdist --wheel . # \u53EA\u6784\u5EFA\ntwine upload dist/* # \u53EA\u53D1\u5E03\u5148\u524D\u7684\u6784\u5EFA\n"})})})]})]})]}),"\n",(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsx)(n.p,{children:"\u53D1\u5E03\u524D\u5EFA\u8BAE\u81EA\u884C\u6D4B\u8BD5\u6784\u5EFA\u5305\u662F\u5426\u53EF\u7528\uFF0C\u907F\u514D\u9057\u6F0F\u4EE3\u7801\u6587\u4EF6\u6216\u8D44\u6E90\u6587\u4EF6\u7B49\u95EE\u9898\u3002"})}),"\n",(0,i.jsx)(n.h2,{id:"\u57FA\u672C\u8981\u6C42",children:"\u57FA\u672C\u8981\u6C42"}),"\n",(0,i.jsxs)(n.p,{children:["\u65E0\u8BBA\u4F60\u9009\u62E9\u54EA\u6761\u8DEF\u5F84\uFF0C\u4EE5\u4E0B\u5185\u5BB9",(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u5B8C\u6210\uFF0C\u5426\u5219\u65E0\u6CD5\u901A\u8FC7\u5546\u5E97\u81EA\u52A8\u68C0\u67E5\uFF1A"]}),"\n",(0,i.jsx)(n.h3,{id:"\u80FD\u591F\u6B63\u786E\u52A0\u8F7D",children:"\u80FD\u591F\u6B63\u786E\u52A0\u8F7D"}),"\n",(0,i.jsxs)(n.p,{children:["\u63D2\u4EF6\u5305\u5FC5\u987B\u80FD\u591F\u88AB NoneBot \u6B63\u786E\u52A0\u8F7D\uFF0C\u5728\u5546\u5E97\u5BA1\u6838\u4E2D\u4F1A\u901A\u8FC7 ",(0,i.jsx)(n.strong,{children:"NoneFlow"})," \u81EA\u52A8\u5316\u52A0\u8F7D\u6D4B\u8BD5\u8FDB\u884C\u3002"]}),"\n",(0,i.jsx)(n.h4,{id:"\u4F9D\u8D56\u5176\u4ED6\u63D2\u4EF6",children:"\u4F9D\u8D56\u5176\u4ED6\u63D2\u4EF6"}),"\n",(0,i.jsxs)(n.p,{children:["\u5982\u679C\u63D2\u4EF6\u4F9D\u8D56\u5176\u4ED6\u63D2\u4EF6\u63D0\u4F9B\u7684\u529F\u80FD\uFF0C\u5219",(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u5728\u4EE3\u7801\u4E2D\u4F7F\u7528 ",(0,i.jsx)(n.code,{children:"require()"})," \u6765\u5F15\u5165\u8BE5\u63D2\u4EF6\uFF0C\u7136\u540E\u624D\u80FD ",(0,i.jsx)(n.code,{children:"import"})," \u8BE5\u63D2\u4EF6\u63D0\u4F9B\u7684\u529F\u80FD\u3002\u5177\u4F53\u7EC6\u8282\u53C2\u9605",(0,i.jsx)(n.a,{href:"/docs/2.4.4/advanced/requiring",children:"\u8DE8\u63D2\u4EF6\u8BBF\u95EE"}),"\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u4F7F\u7528\u793A\u4F8B\u5982\u4E0B\uFF1A"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"title=nonebot_plugin_weather/__init__.py",children:'from nonebot import require\n\nrequire("nonebot_plugin_apscheduler")\n\nfrom nonebot_plugin_apscheduler import scheduler\n'})}),"\n",(0,i.jsx)(n.h4,{id:"\u4E0D\u80FD\u96F6\u914D\u7F6E\u52A0\u8F7D\u7684\u63D2\u4EF6",children:"\u4E0D\u80FD\u96F6\u914D\u7F6E\u52A0\u8F7D\u7684\u63D2\u4EF6"}),"\n",(0,i.jsxs)(n.p,{children:["\u5982\u679C\u63D2\u4EF6\u9700\u8981\u5FC5\u8981\u914D\u7F6E\u9879\u624D\u80FD\u6B63\u5E38\u5BFC\u5165\uFF0C\u5219",(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}
1),"\u5728\u5546\u5E97\u63D0\u4EA4\u8868\u5355\u4E2D\u586B\u5199\u5FC5\u8981\u7684\u914D\u7F6E\u9879\u5185\u5BB9\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u4F46\u4E00\u79CD\u66F4\u597D\u7684\u505A\u6CD5\u662F\uFF0C",(0,i.jsx)(n.strong,{children:"\u5C06\u63D2\u4EF6\u8BBE\u8BA1\u4E3A\u96F6\u914D\u7F6E\u5373\u53EF\u52A0\u8F7D"}),"\uFF08\u5141\u8BB8\u7F3A\u5C11\u5FC5\u8981\u914D\u7F6E\u9879\u65F6\u63D2\u4EF6\u4ECD\u80FD\u6B63\u5E38\u5BFC\u5165\uFF0C\u4F46\u4E0D\u6267\u884C\u9700\u8981\u76F8\u5E94\u914D\u7F6E\u9879\u7684\u529F\u80FD\uFF09\uFF0C\u5C24\u5176\u662F\u5BF9\u4E8E\u4E00\u4E9B\u5FC5\u8981\u914D\u7F6E\u542B\u6709\u654F\u611F\u4FE1\u606F\uFF08\u5982\u5BC6\u94A5\u3001Token\u3001API Key \u7B49\uFF09\u7684\u63D2\u4EF6\u3002\u8FD9\u6837\u53EF\u4EE5\u907F\u514D\u5728\u5546\u5E97\u63D0\u4EA4\u8868\u5355\u65F6\u586B\u5199\u654F\u611F\u4FE1\u606F\u7684\u98CE\u9669\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u63D2\u4EF6\u5143\u6570\u636E",children:"\u63D2\u4EF6\u5143\u6570\u636E"}),"\n",(0,i.jsxs)(n.p,{children:["\u63D2\u4EF6\u5305",(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u586B\u5199\u5143\u6570\u636E\u624D\u80FD\u901A\u8FC7 ",(0,i.jsx)(n.strong,{children:"NoneFlow"})," \u81EA\u52A8\u5316\u68C0\u67E5\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u4E0B\u9762\u662F\u4E00\u4E2A\u793A\u4F8B\uFF1A"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"title=nonebot_plugin_weather/__init__.py",children:'from nonebot.plugin import PluginMetadata\n\nfrom .config import Config\n\n__plugin_meta__ = PluginMetadata(\n # \u57FA\u672C\u4FE1\u606F\uFF08\u5FC5\u586B\uFF09\n name="\u5929\u6C14\u67E5\u8BE2", # \u63D2\u4EF6\u540D\u79F0\n description="\u67E5\u8BE2\u6307\u5B9A\u57CE\u5E02\u7684\u5B9E\u65F6\u5929\u6C14\u4E0E\u672A\u6765\u9884\u62A5", # \u63D2\u4EF6\u4ECB\u7ECD\n usage="\u53D1\u9001\u3010\u5929\u6C14 \u57CE\u5E02\u540D\u3011\u83B7\u53D6\u5929\u6C14\u4FE1\u606F", # \u63D2\u4EF6\u7528\u6CD5\n\n # \u53D1\u5E03\u989D\u5916\u4FE1\u606F\n type="application", # \u63D2\u4EF6\u5206\u7C7B\n # \u53D1\u5E03\u5FC5\u586B\uFF0C\u5F53\u524D\u6709\u6548\u7C7B\u578B\u6709\uFF1A`library`\uFF08\u4E3A\u5176\u4ED6\u63D2\u4EF6\u7F16\u5199\u63D0\u4F9B\u529F\u80FD\uFF09\uFF0C`application`\uFF08\u5411\u673A\u5668\u4EBA\u7528\u6237\u63D0\u4F9B\u529F\u80FD\uFF09\u3002\n\n homepage="https://github.com/\u4F60\u7684\u7528\u6237\u540D/nonebot-plugin-weather",\n # \u53D1\u5E03\u5FC5\u586B\u3002\n\n config=Config,\n # \u63D2\u4EF6\u914D\u7F6E\u9879\u7C7B\uFF0C\u5982\u679C\u6709\u914D\u7F6E\u7C7B\u5219\u5FC5\u987B\u586B\u5199\u3002\n\n supported_adapters={"~onebot.v11"},\n # \u652F\u6301\u7684\u9002\u914D\u5668\u96C6\u5408\uFF0C\u5176\u4E2D `~` \u5728\u6B64\u5904\u4EE3\u8868\u524D\u7F00 `nonebot.adapters.`\uFF0C\u5176\u4F59\u9002\u914D\u5668\u4EA6\u6309\u6B64\u683C\u5F0F\u586B\u5199\u3002\n # \u82E5\u63D2\u4EF6\u53EA\u4F7F\u7528\u4E86 NoneBot \u57FA\u672C\u62BD\u8C61\uFF0C\u5E94\u663E\u5F0F\u586B\u5199 None\uFF0C\u5426\u5219\u5E94\u8BE5\u5217\u51FA\u63D2\u4EF6\u652F\u6301\u7684\u9002\u914D\u5668\u3002\n)\n'})}),"\n",(0,i.jsxs)(n.admonition,{title:"\u6CE8\u610F",type:"warning",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"__plugin_meta__"})," \u53D8\u91CF",(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u5904\u4E8E\u63D2\u4EF6\u6700\u5916\u5C42\uFF08\u5982 ",(0,i.jsx)(n.code,{children:"__init__.py"})," \u4E2D\uFF09\uFF0C\u5426\u5219\u65E0\u6CD5\u6B63\u5E38\u8BC6\u522B\u3002"]}),(0,i.jsxs)(n.p,{children:["\u4E00\u822C\u505A\u6CD5\u662F\u5728 ",(0,i.jsx)(n.code,{children:"__init__.py"})," \u4E2D\u5B9A\u4E49 ",(0,i.jsx)(n.code,{children:"__plugin_meta__"}),"\u3002"]})]}),"\n",(0,i.jsx)(n.h4,{id:"\u7EE7\u627F\u5176\u4ED6\u63D2\u4EF6\u652F\u6301\u7684\u9002\u914D\u5668",children:"\u7EE7\u627F\u5176\u4ED6\u63D2\u4EF6\u652F\u6301\u7684\u9002\u914D\u5668"}),"\n",(0,i.jsxs)(n.p,{children:["\u5982\u679C\u4F60\u7684\u63D2\u4EF6\u4F9D\u8D56\u4E8E\u5176\u4ED6\u63D2\u4EF6\u63D0\u4F9B\u7684\u652F\u6301\u529F\u80FD\uFF0C\u800C\u5176\u4ED6\u63D2\u4EF6\u53EF\u80FD\u652F\u6301\u66F4\u5C11\u7684\u9002\u914D\u5668\uFF0C\u8FD9\u65F6\u5C31\u5E94\u8BE5\u4F7F\u7528\n",(0,i.jsx)(n.a,{href:"../api/plugin/load#inherit-supported-adapters",children:"inherit_supported_adapters()"})," \u51FD\u6570\u6765\u7EE7\u627F\u5176\u4ED6\u63D2\u4EF6\u652F\u6301\u7684\u9002\u914D\u5668\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u793A\u4F8B\u7528\u6CD5\u5982\u4E0B\uFF1A"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"title=nonebot_plugin_weather/__init__.py",children:'from nonebot import require\nfrom nonebot.plugin import PluginMetadata, inherit_supported_adapters\n\nfrom .config import Config\n\nrequire("nonebot_plugin_alconna") # \u5FC5\u987B\u5148 require \u624D\u80FD\u88AB inherit_supported_adapters \u5904\u7406\n\n__plugin_meta__ = PluginMetadata(\n name="\u5929\u6C14\u67E5\u8BE2",\n description="\u67E5\u8BE2\u6307\u5B9A\u57CE\u5E02\u7684\u5B9E\u65F6\u5929\u6C14\u4E0E\u672A\u6765\u9884\u62A5",\n usage="\u53D1\u9001\u3010\u5929\u6C14 \u57CE\u5E02\u540D\u3011\u83B7\u53D6\u5929\u6C14\u4FE1\u606F",\n type="application",\n homepage="https://github.com/\u4F60\u7684\u7528\u6237\u540D/nonebot-plugin-weather",\n config=Config,\n\n supported_adapters=inherit_supported_adapters("nonebot_plugin_alconna"),\n # \u7EE7\u627F nonebot_plugin_alconna \u63D2\u4EF6\u7684\u9002\u914D\u5668\u652F\u6301\u5217\u8868\n)\n'})}),"\n",(0,i.jsx)(n.h3,{id:"\u51C6\u5907\u9879\u76EE\u4E3B\u9875",children:"\u51C6\u5907\u9879\u76EE\u4E3B\u9875"}),"\n",(0,i.jsxs)(n.p,{children:["\u901A\u5E38\u53EF\u4EE5\u4F7F\u7528 GitHub \u9879\u76EE\u9875\u9762\u4F5C\u4E3A\u9879\u76EE\u4E3B\u9875\uFF0C\u5728 ",(0,i.jsx)(n.code,{children:"README.md"})," \u6587\u4EF6\u4E2D\u7F16\u5199\u63D2\u4EF6\u4ECB\u7ECD\u7B49\u5185\u5BB9\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u5185\u5BB9\u5927\u81F4\u5305\u62EC\uFF1A"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u63D2\u4EF6\u529F\u80FD\u4ECB\u7ECD\uFF1B"}),"\n",(0,i.jsxs)(n.li,{children:["\u5B89\u88C5\u65B9\u6CD5","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u6709 NB-CLI \u65B9\u5F0F\u5B89\u88C5"]}),"\n",(0,i.jsx)(n.li,{children:"\u53EF\u9009\u4F9D\u8D56\u53EF\u4EE5\u7ED9\u51FA\u5176\u4ED6\u5B89\u88C5\u65B9\u5F0F"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u4E0D\u5F97"}),"\u4F7F\u7528\u65E7\u5F0F\u7684 ",(0,i.jsx)(n.code,{children:"bot.py"})," \u914D\u7F6E"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\u63D2\u4EF6\u914D\u7F6E\u9879\uFF08\u5982 ",(0,i.jsx)(n.code,{children:"Config"})," \u7C7B\u5B57\u6BB5\uFF0C\u82E5\u65E0\u53EF\u8DF3\u8FC7\uFF09"]}
1),"\n",(0,i.jsx)(n.li,{children:"\u63D2\u4EF6\u8BBE\u7F6E\u7684\u89E6\u53D1\u89C4\u5219\uFF08\u82E5\u65E0\u53EF\u8DF3\u8FC7\uFF09"}),"\n",(0,i.jsx)(n.li,{children:"\u63D2\u4EF6\u7684\u5176\u5B83\u7528\u6CD5\uFF08\u6309\u9700\u7F16\u5199\uFF09"}),"\n",(0,i.jsx)(n.li,{children:"\u6548\u679C\u56FE\u3001\u6743\u9650\u8BF4\u660E\uFF08\u6309\u9700\u7F16\u5199\uFF09"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"\u8D28\u91CF\u8981\u6C42",children:"\u8D28\u91CF\u8981\u6C42"}),"\n",(0,i.jsxs)(n.p,{children:["\u4EE5\u4E0B\u5185\u5BB9",(0,i.jsx)(n.strong,{children:"\u5F3A\u70C8\u5EFA\u8BAE"}),"\u5B8C\u6210\uFF0C\u5426\u5219\u793E\u533A\u6210\u5458\u5C06\u4F1A\u8981\u6C42\u4FEE\u6539\uFF1A"]}),"\n",(0,i.jsx)(n.h3,{id:"\u4F9D\u8D56\u7BA1\u7406\u539F\u5219",children:"\u4F9D\u8D56\u7BA1\u7406\u539F\u5219"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u5305\u542B ",(0,i.jsx)(n.code,{children:"nonebot2"}),"\u3002"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u5C06\u63D2\u4EF6\u76F4\u63A5\u4F7F\u7528\u7684\u9002\u914D\u5668\u52A0\u5165\u4F9D\u8D56\u5217\u8868\uFF0C\u5982\uFF1A\u4F7F\u7528 OneBot \u9002\u914D\u5668\u7684\u63D2\u4EF6\u5E94\u6DFB\u52A0 ",(0,i.jsx)(n.code,{children:"nonebot-adapter-onebot"})," \u4F9D\u8D56\uFF1B"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u7981\u6B62"}),"\u4F7F\u7528 ",(0,i.jsx)(n.code,{children:"=="})," \u9501\u5B9A\u5355\u4E00\u7248\u672C\uFF0C\u4F7F\u7528 ",(0,i.jsx)(n.code,{children:">="})," \u6216 ",(0,i.jsx)(n.code,{children:"~="}),"\u3002"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u7981\u6B62"}),"\u6DFB\u52A0 ",(0,i.jsx)(n.code,{children:"nonebot"}),"\uFF08V1\uFF09\u4F5C\u4E3A\u4F9D\u8D56\u3002"]}),"\n",(0,i.jsxs)(n.li,{children:["\u6240\u6709\u5728\u4EE3\u7801\u4E2D ",(0,i.jsx)(n.code,{children:"import"})," \u7684\u7B2C\u4E09\u65B9\u5E93\uFF0C\u5FC5\u987B\u5728 ",(0,i.jsx)(n.code,{children:"pyproject.toml"})," \u7684 ",(0,i.jsx)(n.code,{children:"dependencies"})," \u4E2D\u5217\u51FA\u3002"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"\u907F\u514D\u8BEF\u7528\u540C\u6B65\u64CD\u4F5C",children:"\u907F\u514D\u8BEF\u7528\u540C\u6B65\u64CD\u4F5C"}),"\n",(0,i.jsxs)(n.p,{children:["NoneBot \u662F\u4E00\u4E2A\u5F02\u6B65\u6846\u67B6\uFF0C\u63D2\u4EF6\u4E2D",(0,i.jsx)(n.strong,{children:"\u7981\u6B62"}),"\u4F7F\u7528\u4EFB\u4F55\u53EF\u80FD\u963B\u585E\u4E8B\u4EF6\u5FAA\u73AF\u7684\u540C\u6B65\u64CD\u4F5C\uFF0C\u4F8B\u5982\uFF1A"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["\u540C\u6B65 HTTP \u8BF7\u6C42\uFF08\u5982 ",(0,i.jsx)(n.code,{children:"requests"})," \u5E93\uFF09\uFF1B"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u63A8\u8350"}),"\u64CD\u4F5C\uFF08\u4EE5 ",(0,i.jsx)(n.code,{children:"httpx"})," \u4E3A\u4F8B\uFF09\uFF1A"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'import httpx\n\nasync with httpx.AsyncClient() as client:\n response = await client.get("https://api.example.com/data") # \u5F02\u6B65\u64CD\u4F5C\uFF0C\u4E0D\u963B\u585E\u673A\u5668\u4EBA\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u7981\u6B62"}),"\u64CD\u4F5C\uFF1A"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'import requests\n\nrequests.get("https://api.example.com/data") # \u540C\u6B65\u64CD\u4F5C\uFF0C\u4F1A\u963B\u585E\u673A\u5668\u4EBA\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"\u5176\u4ED6\u53EF\u80FD\u957F\u65F6\u95F4\u8FD0\u884C\u963B\u585E\u4E8B\u4EF6\u5FAA\u73AF\u7684\u64CD\u4F5C\u3002"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"\u672C\u5730\u6587\u4EF6\u5B58\u50A8",children:"\u672C\u5730\u6587\u4EF6\u5B58\u50A8"}),"\n",(0,i.jsxs)(n.p,{children:["\u5982\u679C\u63D2\u4EF6\u9700\u8981\u5728\u672C\u5730\u5B58\u50A8\u6570\u636E\u3001\u914D\u7F6E\u6216\u7F13\u5B58\u6587\u4EF6\uFF0C",(0,i.jsx)(n.strong,{children:"\u5FC5\u987B"}),"\u4F7F\u7528 ",(0,i.jsx)(n.a,{href:"https://github.com/nonebot/plugin-localstore",children:(0,i.jsx)(n.code,{children:"nonebot-plugin-localstore"})})," \u7BA1\u7406\uFF0C\u5177\u4F53\u7EC6\u8282\u53C2\u9605",(0,i.jsx)(n.a,{href:"/docs/2.4.4/best-practice/data-storing",children:"\u672C\u5730\u5B58\u50A8"}),"\u7AE0\u8282\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u53C2\u8003\u793A\u4F8B\uFF1A"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"title=nonebot_plugin_weather/__init__.py",children:'from pathlib import Path\nfrom nonebot import require\nrequire("nonebot_plugin_localstore")\n\nimport nonebot_plugin_localstore as store\n\n# \u83B7\u53D6\u63D2\u4EF6\u7F13\u5B58\u6587\u4EF6\uFF08\u5939\uFF09\u8DEF\u5F84\nweather_
1cache_dir: Path = store.get_plugin_cache_dir()\nweather_cache_file: Path = store.get_plugin_cache_file("cache.json")\n\n# \u83B7\u53D6\u63D2\u4EF6\u914D\u7F6E\u6587\u4EF6\uFF08\u5939\uFF09\u8DEF\u5F84\nweather_config_dir: Path = store.get_plugin_config_dir()\nweather_config_file: Path = store.get_plugin_config_file("config.toml")\n\n# \u83B7\u53D6\u63D2\u4EF6\u6570\u636E\u6587\u4EF6\uFF08\u5939\uFF09\u8DEF\u5F84\nweather_data_dir: Path = store.get_plugin_data_dir()\nweather_data_file: Path = store.get_plugin_data_file("resource-index.json")\n'})}),"\n",(0,i.jsx)(n.h2,{id:"\u5546\u5E97\u5BA1\u6838",children:"\u5546\u5E97\u5BA1\u6838"}),"\n",(0,i.jsx)(n.h3,{id:"\u63D0\u4EA4\u7533\u8BF7",children:"\u63D0\u4EA4\u7533\u8BF7"}),"\n",(0,i.jsxs)(n.p,{children:["\u5B8C\u6210\u5728 PyPI \u7684\u63D2\u4EF6\u53D1\u5E03\u6D41\u7A0B\u540E\uFF0C\u524D\u5F80",(0,i.jsx)(n.a,{href:"/store/plugins",children:"\u5546\u5E97"}),"\u9875\u9762\uFF0C\u5207\u6362\u5230\u63D2\u4EF6\u9875\u7B7E\uFF0C\u70B9\u51FB ",(0,i.jsx)(n.strong,{children:"\u53D1\u5E03\u63D2\u4EF6"})," \u6309\u94AE\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u5728\u5F39\u51FA\u7684\u63D2\u4EF6\u4FE1\u606F\u63D0\u4EA4\u8868\u5355\u5185\uFF0C\u586B\u5165\u60A8\u6240\u8981\u53D1\u5E03\u7684\u76F8\u5E94\u63D2\u4EF6\u4FE1\u606F\u3002\u8BF7\u6CE8\u610F\uFF0C\u5982\u679C\u63D2\u4EF6\u9700\u8981\u5FC5\u8981\u914D\u7F6E\u9879\u624D\u80FD\u6B63\u5E38\u5BFC\u5165\uFF0C\u8BF7\u5728\u201C\u63D2\u4EF6\u914D\u7F6E\u9879\u201D\u4E2D\u586B\u5199\u5FC5\u8981\u7684\u5185\u5BB9\uFF08\u8BF7\u52FF\u586B\u5199\u5BC6\u94A5\u7B49\u654F\u611F\u4FE1\u606F\uFF09\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u5B8C\u6210\u586B\u5199\u540E\uFF0C\u70B9\u51FB ",(0,i.jsx)(n.strong,{children:"\u53D1\u5E03"})," \u6309\u94AE\uFF0C\u8FD9\u5C06\u81EA\u52A8\u8DF3\u8F6C NoneBot \u4ED3\u5E93\u5185\u7684\u201C\u53D1\u5E03\u63D2\u4EF6\u201D\u9875\u9762\u3002\u786E\u8BA4\u4FE1\u606F\u65E0\u8BEF\u540E\u70B9\u51FB\u9875\u9762\u4E0B\u65B9\u7684 ",(0,i.jsx)(n.code,{children:"Submit new issue"})," \u6309\u94AE\u8FDB\u884C\u6700\u7EC8\u63D0\u4EA4\u5373\u53EF\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u7B49\u5F85\u63D2\u4EF6\u5BA1\u6838",children:"\u7B49\u5F85\u63D2\u4EF6\u5BA1\u6838"}),"\n",(0,i.jsxs)(n.p,{children:["\u63D2\u4EF6\u53D1\u5E03 Issue \u521B\u5EFA\u540E\uFF0C\u5C06\u4F1A\u7ECF\u8FC7 ",(0,i.jsx)(n.strong,{children:"NoneFlow Bot"})," \u7684\u81EA\u52A8\u524D\u7F6E\u68C0\u67E5\uFF0C\u4EE5\u786E\u4FDD\u63D2\u4EF6\u4FE1\u606F\u6B63\u786E\u65E0\u8BEF\u3001\u63D2\u4EF6\u80FD\u88AB\u6B63\u786E\u52A0\u8F7D\u3002"]}),"\n",(0,i.jsx)(n.admonition,{title:"\u63D0\u793A",type:"tip",children:(0,i.jsxs)(n.p,{children:["\u82E5\u63D2\u4EF6\u68C0\u67E5\u672A\u9
101A\u8FC7\u6216\u4FE1\u606F\u6709\u8BEF\uFF0C",(0,i.jsx)(n.strong,{children:"\u4E0D\u5FC5"}),"\u5173\u95ED\u5F53\u524D Issue\u3002\u53EA\u9700\u66F4\u65B0\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230 PyPI/\u4FEE\u6539\u4FE1\u606F\u540E\u52FE\u9009\u63D2\u4EF6\u6D4B\u8BD5\u52FE\u9009\u6846\u5373\u53EF\u91CD\u65B0\u89E6\u53D1\u63D2\u4EF6\u68C0\u67E5\u3002"]})}),"\n",(0,i.jsx)(n.p,{children:"\u4E4B\u540E\uFF0CNoneBot \u7684\u7EF4\u62A4\u8005\u548C\u4E00\u4E9B\u5FD7\u613F\u8005\u4F1A\u521D\u6B65\u68C0\u67E5\u63D2\u4EF6\u4EE3\u7801\uFF0C\u5E2E\u52A9\u51CF\u5C11\u8BE5\u63D2\u4EF6\u7684\u95EE\u9898\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u5B8C\u6210\u8FD9\u4E9B\u6B65\u9AA4\u540E\uFF0C\u60A8\u7684\u63D2\u4EF6\u5C06\u4F1A\u88AB\u81EA\u52A8\u5408\u5E76\u5230",(0,i.jsx)(n.a,{href:"/store/plugins",children:"\u5546\u5E97"}),"\uFF0C\u800C\u60A8\u4E5F\u5C06\u6210\u4E3A ",(0,i.jsx)(n.a,{href:"https://github.com/nonebot/nonebot2/graphs/contributors",children:(0,i.jsx)(n.strong,{children:"NoneBot \u8D21\u732E\u8005"})}),"\u7684\u4E00\u5458\u3002"]})]})}function u(e={}){let{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}},90118(e,n,l){l.d(n,{OC:()=>p,O_:()=>j,uc:()=>x,vT:()=>c});var r=l(62540),i=l(63696),s=l(49519),t=l(92882),d=l(76274),a=l(635),o=l(56113);function c(e){return i.Children.toArray(e).filter(e=>"\n"!==e)}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function p(e){let n,{defaultValue:l,queryString:r=!1,groupId:c}=e,p=function(e){let{values:n,children:l}=e;return(0,i.useMemo)(()=>{let e=n??i.Children.toArray(l).flatMap(e=>{if(!e)return[];if((0,i.isValidElement)(e)&&function(e){let{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return[e];let n="string"==typeof e.type?e.type:e.type.name;throw Error(`Docusaurus error: Bad <Tabs> child <${n}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop. 2If you do not want to pass on a "value" prop to the direct children of <Tabs>, you can also pass an explicit <Tabs values={...}> prop.`)}).map(({props:{value:e,label:n,attributes:l,default:r}})=>({value:e,label:n,attributes:l,default:r})),r=(0,a.XI)(e,(e,n)=>e.value===n.value);if(r.length>0)throw Error(`Docusaurus error: Duplicate values "${r.map(e=>`'${e.value}'`).join(", ")}" found in <Tabs>. Every value needs to be unique.`);return e},[n,l])}(e),[u,x]=(0,i.useState)(()=>(function({defaultValue:e,tabValues:n}){if(0===n.length)throw Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" 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 e}let l=n.find(e=>e.default)??n[0];if(!l)throw Error("Unexpected error: 0 tabValues");return l.value})({defaultValue:l,tabValues:p})),[j,g]=function({queryString:e=!1,groupId:n}){let l=(0,s.W6)(),r=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw Error('Docusaurus error: The <Tabs> 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:e,groupId:n});return[(0,d.aZ)(r),(0,i.useCallback)(e=>{if(!r)return;let n=new URLSearchParams(l.location.search);n.set(r,e),l.replace({...l.location,search:n.toString()})},[r,l])]}({queryString:r,groupId:c}),[m,b]=function({groupId:e}){let n=e?`docusaurus.tab.${e}`:null,[l,r]=(0,o.Dv)(n);return[l,(0,i.useCallback)(e=>{n&&r.set(e)},[n,r])]}({groupId:c}),v=h({value:n=j??m,tabValues:p})?n:null;return(0,t.A)(()=>{v&&x(v)},[v]),{selectedValue:u,selectValue:(0,i.useCallback)(e=>{if(!h({value:e,tabValues:p}))throw Error(`Can't select invalid tab value=${e}`);x(e),g(e),b(e)},[g,b,p]),tabValues:p,lazy:e.lazy??!1,block:e.block??!1}}let u=(0,i.createContext)(null);function x(){let e=i.useContext(u);if(!e)throw Error("useTabsContext() must be used within a Tabs component");return e}function j(e){return(0,r.jsx)(u.Provider,{value:e.value,children:e.children})}},84993(e,n,l){l.d(n,{A:()=>d});var r=l(62540);l(63696);var i=l(11750),s=l(90118);function t({children:e,className:n,hidden:l}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)("tab-panel",n),hidden:l,children:e})}function d({children:e,className:n,value:l}){let{selectedValue:i,lazy:a}=(0,s.uc)(),o=l===i;return!o&&a?null:(0,r.jsx)(t,{className:n,hidden:!o,children:e})}},36031(e,n,l){l.d(n,{A:()=>p});var r=l(62540);l(63696);var i=l(11750),s=l(49130),t=l(90118),d=l(72489),a=l(48682);function o({className:e}){let{selectedValue:n,selectValue:l,tabValues:s,block:a}=(0,t.uc)(),c=[],{blockElementScrollPositionUntilNextRender:h}=(0,d.a_)(),p=e=>{let r=e.currentTarget,i=s[c.indexOf(r)].value;i!==n&&(h(r),l(i))},u=e=>{let n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{let l=c.indexOf(e.currentTarget)+1;n=c[l]??c[0];break}case"ArrowLeft":{let l=c.indexOf(e.currentTarget)-1;n=c[l]??c[c.length-1]}}n?.focus()};return(0,r.jsx)("div",{className:"not-prose",children:(0,r.jsxs)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs tabs-list tabs-lifted",a&&"tabs-block",e),children:[s.map(({value:e,label:l,attributes:s})=>(0,r.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{c.push(e)},onKeyDown:u,onClick:p,...s,className:(0,i.A)("tab tab-lifted tab-item",s?.className,n===e&&"tab-active tab-item-active"),children:l??e},e)),(0,r.jsx)("div",{className:"tab tab-lifted tab-item tab-spacer"})]})})}function c({children:e}){return(0,r.jsx)("div",{children:e})}function h({className:e,children:n}){return(0,r.jsxs)("div",{className:(0,i.A)(s.G.tabs.container,"tabs-container"),children:[(0,r.jsx)(o,{className:e}),(0,r.jsx)(c,{children:n})]})}function p(e){let n=(0,a.A)(),l=(0,t.OC)(e);return(0,r.jsx)(t.O_,{value:l,children:(0,r.jsx)(h,{className:e.className,children:(0,t.vT)(e.children)})},String(n))}},43023(e,n,l){l.d(n,{R:()=>t,x:()=>d});var r=l(63696);let i={},s=r.createContext(i);function t(e){let n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.