infini'水系核心

pypi hydro [![.github/workflows/python-publish.yml](https://github.com/HydroRoll-Team/infini/actions/workflows/python-publish.yml/badge.svg)](https://github.com/HydroRoll-Team/infini/actions/workflows/python-publish.yml) [![CodeQL](https://github.com/HydroRoll-Team/infini/actions/workflows/codeql.yml/badge.svg)](https://github.com/HydroRoll-Team/infini/actions/workflows/codeql.yml) [![Netlify Status](https://api.netlify.com/api/v1/badges/ecbe4af3-223f-4fa4-a182-a37a776fd05b/deploy-status)](https://app.netlify.com/sites/grps-v1/deploys)

## 🎁 `Getting` hydro > [!IMPORTANT] > > 强烈推荐使用 `pdm` 等能创建虚拟环境的包管理工具管理你的 `HydroRollBot` 项目。 1. 安装库 在终端中执行: ```bash git clone https://github.com/HydroRoll-Team/infini.git cd infini pdm install ``` 你可以使用`pip`进行安装: ```bash pip install infini ``` 2. 创建规则包实例 确保你的`infini`正确安装后,打开终端并执行: ``` shell python -m infini new MyRule ``` 你可以在生成的 `MyRule\rule.py` 创建一个或者多个继承 `Handler` 基类的实例, 通过编写合适的相关方法与类注册规则包实现规则的自定义。 ``` python from infini import Handler, Result __handlers__ = ["HandlerRule"] class HandlerRule(Handler): """自设业务函数""" name = "MyRule" # 规则包名 priority: int = 0 # 规则包权重 def process(self, **kwargs) -> Result: """声明规则包检定方式""" return Result("event1", True) ``` `process`函数应当返回一个`Result`对象,它应当包含一个消息事件名(例如示例中的`event1`),该消息事件名应当在 `MyRule\event.py` 中被注册。消息事件的动态内容通过`{name}`的方式声明并通过`name="内容"`的方式实现。 3. 创建你的测试文件 在 `MyRule\tests.py` 中的 `test` 函数中给出测试函数,并返回一个 `list`,应当包含所有异常内容。 4. 测试你的规则包 执行指令: ```bash python -m infini test MyRule ``` ## 🌟 `contribute` 在此之前,请先克隆本仓库。 ```shell git clone https://github.com/HydroRoll-Team/infini.git ``` ### 贡献手册 本段内容主要针对想要为[通用规则包标准(GRPS)]的`docs 文档` 或 `Python 实现` 作贡献的社区朋友,若您想要推广 `GRPS-1` 标准的其他语言实现,请提交相关 `PR`,届时修改下方的[资源列表]。 您需要确保自己的硬件环境有 `Python` 解释器,您需要全局安装 `pdm` 依赖以实现局部开发 `infini` 文档或源码的目的。 ```shell pip3 install pdm ``` 接着在 `infini` 仓库主分支的根目录下激活 `pdm` 虚拟环境。 ```shell cd infini pdm venv list pdm venv activate in-project ``` **一、 在本地部署文档** 在 `infini` 仓库根目录下安装 `docs` 组的依赖。 ```shell pdm install -dG docs ``` 依赖安装完毕后,可进行版本控制或直接进行文档贡献。 > 版本控制 | `mike` 的其他指令具体可查看 [jimporter/mike](https://github.com/jimporter/mike)。 ```shell pdm run mike serve ``` 这样便可以查看不同版本的文档了。 > 文档贡献 | 这样贡献出来的文档永远是 `dev` 分支或 `latests` 分支的,这也是最为普遍的文档贡献方式,`mkdocs` 具体的配置教程可查看 [squidfunk/mkdocs]()。 ```shell pdm run mkdocs serve ``` 接着就可以在本地 `8000` 端口查看文档了,同时由于 `mkdocs` 是热加载的,因此您可以直接在 `serve` 指令预览最新文档后,修改对应文档的内容,保存后仅需等待文档内容变化即可。 > [!WARNING] > > 注意,强烈建议学习 [mkdocs-materials](https://squidfunk.github.io/mkdocs-material/) 的文档语法后进行文档内容的贡献 `PR`,同时还请遵循水系核心的[文档规范]。 ### 贡献源码 在贡献源码之前,请先知悉水系有一套渐进式开发文档,水系核心 `infini` 的开发是极其内核的,但是,此 `repo` 所代表的仅仅只是 `GRPS-1` 的一个 `Python` 实现,因此如果已经相当了解水系架构和通用规则包标准,那么可以遵循以下说明进行适当的开发。 水系核心主要由三部分构成:`Rule API`、`Rule Wiki`、`Rule Event-Handler`。 1. `Rule API` 该部分由网络库编写,为其他组件提供一个接入或把 `infini` 接入的可能。 3. `Rule Wiki` 该部分主要用于读取 `__doc__` 并格式化为 `mkdocs` 站点以及成品规则书 `pdf`。 4. `Rule Event-Handler` 该部分用于实际与 `HydroRoll` 插件通信。 ## 🎍 `resources` _(recommend)_ ~~~~ ## 📄 `License` [MIT](https://github.com/HydroRoll-Team/infini/blob/master/LICENSE) © 2023-PRESENT [简律纯](https://github.com/HsiangNianian) [通用规则包标准(GRPS)]: https://grps.hydroroll.team/dev/standard/what-is-rule-package/ [资源列表]: https://github.com/HydroRoll-Team/infini?tab=readme-ov-file#-resources [文档规范]: https://grps.hydroroll.team/dev/contribute/