[](https://github.com/HydroRoll-Team/infini/actions/workflows/python-publish.yml)
[](https://github.com/HydroRoll-Team/infini/actions/workflows/codeql.yml)
[](https://app.netlify.com/sites/grps-v1/deploys)
> [!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`