aboutsummaryrefslogtreecommitdiffstatshomepage

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

在此之前,请先克隆本仓库。

git clone https://github.com/HydroRoll-Team/infini.git

贡献手册

本段内容主要针对想要为通用规则包标准(GRPS)docs 文档Python 实现 作贡献的社区朋友,若您想要推广 GRPS-1 标准的其他语言实现,请提交相关 PR,届时修改下方的资源列表

您需要确保自己的硬件环境有 Python 解释器,您需要全局安装 pdm 依赖以实现局部开发 infini 文档或源码的目的。

pip3 install pdm

接着在 infini 仓库主分支的根目录下激活 pdm 虚拟环境。

cd infini
pdm venv list
pdm venv activate in-project

一、 在本地部署文档

infini 仓库根目录下安装 docs 组的依赖。

pdm install -dG docs

依赖安装完毕后,可进行版本控制或直接进行文档贡献。

版本控制 | mike 的其他指令具体可查看 jimporter/mike

pdm run mike serve

这样便可以查看不同版本的文档了。

文档贡献 | 这样贡献出来的文档永远是 dev 分支或 latests 分支的,这也是最为普遍的文档贡献方式,mkdocs 具体的配置教程可查看 squidfunk/mkdocs

pdm run mkdocs serve

接着就可以在本地 8000 端口查看文档了,同时由于 mkdocs 是热加载的,因此您可以直接在 serve 指令预览最新文档后,修改对应文档的内容,保存后仅需等待文档内容变化即可。

[!WARNING]

注意,强烈建议学习 mkdocs-materials 的文档语法后进行文档内容的贡献 PR,同时还请遵循水系核心的文档规范

贡献源码

在贡献源码之前,请先知悉水系有一套渐进式开发文档,水系核心 infini 的开发是极其内核的,但是,此 repo 所代表的仅仅只是 GRPS-1 的一个 Python 实现,因此如果已经相当了解水系架构和通用规则包标准,那么可以遵循以下说明进行适当的开发。

水系核心主要由三部分构成:Rule APIRule WikiRule Event-Handler

  1. Rule API

该部分由网络库编写,为其他组件提供一个接入或把 infini 接入的可能。

  1. Rule Wiki

该部分主要用于读取 __doc__ 并格式化为 mkdocs 站点以及成品规则书 pdf

  1. Rule Event-Handler

该部分用于实际与 HydroRoll 插件通信。

🎍 resources

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

📄 License

MIT © 2023-PRESENT 简律纯