mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-12-01 14:14:46 +08:00
2 lines
5.9 KiB
JavaScript
2 lines
5.9 KiB
JavaScript
import{C as e}from"./chunks/ContributorBar.CQEMOx_h.js";import{c as o,I as i,a9 as l,o as t}from"./chunks/framework.C4_mTacX.js";import"./chunks/theme.CAlui6tn.js";const a=l('<h1 id="开发指南" tabindex="-1">开发指南 <a class="header-anchor" href="#开发指南" aria-label="Permalink to "开发指南""></a></h1><h2 id="如何开发" tabindex="-1">如何开发 <a class="header-anchor" href="#如何开发" aria-label="Permalink to "如何开发""></a></h2><p>插件开发无需阅读本文档,请阅读<a href="./plugin.html">插件开发文档</a>和<a href="./api/">API 引用</a>。</p><p>如需往轻雪仓库提交代码,请阅读以下内容:</p><ol><li>首先<a href="https://github.com/LiteyukiStudio/LiteyukiBot/fork" target="_blank" rel="noreferrer">fork</a>一份轻雪仓库到你的个人/组织账户下。</li><li>在你的仓库中进行开发。</li><li>在你的仓库中创建一个新的分支,将你的代码提交到这个分支。</li><li>在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的<code>main</code>分支。</li></ol><p>参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。 出现冲突请与仓库维护者联系。</p><h3 id="建议" tabindex="-1">建议 <a class="header-anchor" href="#建议" aria-label="Permalink to "建议""></a></h3><ul><li>开发过程中可以使用<code>mypy</code>, <code>flake8</code>, <code>black</code>等工具进行代码检查和格式化。</li><li>启用开发者模式,可以在<code>config.yml</code>中设置<code>dev_mode: true</code>,这样可以在控制台看到更多的调试信息。</li></ul><h2 id="项目结构" tabindex="-1">项目结构 <a class="header-anchor" href="#项目结构" aria-label="Permalink to "项目结构""></a></h2><ul><li><code>main.py</code>: 机器人入口文件</li><li><code>liteyuki</code>: 框架目录(liteyukibot)</li><li><code>src</code>: 机器人源码目录 <ul><li><code>liteyuki_plugins</code>: 轻雪插件目录</li><li><code>nonebot_plugins</code>: Nonebot插件目录</li><li><code>resources</code>: 内置资源包目录</li><li><code>utils</code>: 工具目录</li></ul></li><li><code>tests</code>: 单元测试目录</li><li><code>docs</code>: 文档目录 <ul><li><code>en</code>: 英文文档</li><li><code>zh</code>: 中文文档</li></ul></li><li><code>docker</code>: Docker相关内容目录</li></ul><p>其中,<code>liteyuki</code>框架是包含在<code>LiteyukiBot</code>应用中的,所以此项目既是<code>LiteyukiBot</code>应用仓库,同时也是<code>liteyuki</code>框架的仓库</p><p><code>src</code>目录下为应用程序部分,业务逻辑请在此目录下进行开发,<code>liteyuki_plugins</code>和<code>nonebot_plugins</code>目录下为插件目录,插件开发请在此目录下进行开发。</p><h2 id="规范化" tabindex="-1">规范化 <a class="header-anchor" href="#规范化" aria-label="Permalink to "规范化""></a></h2><ul><li>代码请遵循<a href="https://pep8.org/" target="_blank" rel="noreferrer"><code>PEP8</code></a>和<a href="https://google.github.io/styleguide/pyguide.html" target="_blank" rel="noreferrer"><code>Google Python Style Guide</code></a></li><li>提交到轻雪仓库的代码,请遵循以下规范: <ul><li>请确保代码是可运行的,没有危害的。</li><li>请确保代码的类型提示是正确的。</li><li>请确保注释风格为<a href="https://google.github.io/styleguide/pyguide.html" target="_blank" rel="noreferrer"><code>Google Docstring</code></a>或<a href="https://github.com/LiteyukiStudio/litedoc?tab=readme-ov-file#liteyuki-docstring" target="_blank" rel="noreferrer"><code>Liteyuki Docstring</code></a>(推荐)以保证Litedoc能够正确解析并生成文档。</li><li>字符串请使用双引号<code>"</code>,尽量避免使用单引号<code>'</code>,但在嵌套字符串时可以使用单引号。</li><li>若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。</li></ul></li><li>commit message请遵循以下规范: <ul><li>应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。</li><li>我们使用gitmoji来标记commit的类型,如<code>:sparkles:</code>表示引入新功能,<code>:bug:</code>表示修复bug等,具体请参考<a href="https://gitmoji.dev/" target="_blank" rel="noreferrer">gitmoji</a></li><li>commit message的格式为<code><emoji> [type:] <message></code>,如<code>:sparkles: feat: 给event添加新字段</code>, 其中<code>type</code>字段为commit类型且<strong>可选</strong>,message字段为简短的描述,总结来说就是你干了什么。</li><li>不限制commit message的语言,有条件可以使用中英双语。</li></ul></li><li>文档请遵循<a href="https://www.markdownguide.org/" target="_blank" rel="noreferrer"><code>Markdown</code></a>语法,并且支持vitepress相关内容: <ul><li>修订文档时,每个语言的文档都要修订。</li><li>请确保文档内的链接是正确的,不要出现无法访问的死链接。</li><li>请确保<strong>用户文档</strong>是通俗易懂的,<strong>开发文档</strong>是详细的。</li></ul></li></ul><h2 id="最后" tabindex="-1">最后 <a class="header-anchor" href="#最后" aria-label="Permalink to "最后""></a></h2><ul><li>本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。</li></ul>',16),g=JSON.parse('{"title":"开发指南","description":"","frontmatter":{"title":"开发指南","order":0},"headers":[],"relativePath":"dev/guide.md","filePath":"zh/dev/guide.md","lastUpdated":1725389024000}'),r={name:"dev/guide.md"},m=Object.assign(r,{setup(d){return(c,u)=>(t(),o("div",null,[a,i(e)]))}});export{g as __pageData,m as default};
|