aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs/v1.0/README.md
blob: fe02a8ae54bb128628bac52faeb23b4307292246 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<h1 align="right">infini'水系核心</h1>

<p align="right">
    <a aria-label="Join the community on GitHub" href="https://github.com/HydroRoll-Team/hydroroll/discussions" target="blank">
        <img alt="" src="https://img.shields.io/badge/Join%20the%20community-blueviolet.svg?logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/CgoK/woKCv8GBgb/BgYG/woKCv8KCgr/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BgYG/0ZGRv9MTEz/JiYm/ygoKP9MTEz/RkZG/wYGBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9ycnL/Li4u/1xcXP9eXl7/Li4u/3Jycv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP88PDz/cnJy/05OTv9OTk7/UFBQ/05OTv9wcHD/Pj4+/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Kioq/3Jycv9cXFz/TExM/05OTv9aWlr/cHBw/yoqKv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Pj4+/zg4OP+AgID/Pj4+/2ZmZv9oaGj/PDw8/4CAgP86Ojr/Pj4+/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ywsLP9iYmL/enp6/zIyMv90dHT/dHR0/zAwMP98fHz/YmJi/ywsLP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9SUlL/PDw8/3Jycv9CQkL/UlJS/1RUVP9CQkL/cnJy/zw8PP9SUlL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/VFRU/yIiIv9aWlr/PDw8/zw8PP8+Pj7/PDw8/1hYWP8iIiL/VFRU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zQ0NP9CQkL/ZmZm/yIiIv9WVlb/WFhY/yIiIv9mZmb/QkJC/zY2Nv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9QUFD/BgYG/0RERP9KSkr/JCQk/yYmJv9KSkr/RERE/wgICP9QUFD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CgoK/wICAv8KCgr/CgoK/wYGBv8GBgb/CgoK/woKCv8CAgL/CgoK/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==&labelColor=000000&logoWidth=20&logoColor=white">
    </a>
    <a href="https://pypi.org/project/infini">
        <img alt="pypi" src="https://img.shields.io/pypi/v/infini?labelColor=000000">
    </a>
    <a href="https://github.com/HydroRoll-Team/infini/blob/master/LICENSE">
        <img alt="hydro" src="https://img.shields.io/pypi/l/infini?labelColor=000000&color=">
    </a>

[![.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)

</p>

## 🎁 `Getting` <img align="right" alt="hydro" src="https://mirror.ghproxy.com/https://raw.githubusercontent.com/HydroRoll-Team/HydroRoll/main/site/src/assets/image/logo.png" height="120">

> [!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`

<https://grps.hydroroll.team> _(recommend)_  
<https://grps-v1.netlify.app>  
~~<https://hydroroll-team.github.io/infini/>~~

## 📄 `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/