Metadata-Version: 2.3
Name: nonebot-plugin-zxpm
Version: 0.2.5
Summary: 真寻的插件管理系统
License: AGPL3.0
Author: HibiKier
Author-email: 775757368@qq.com
Requires-Python: >=3.10,<4.0
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: nonebot-plugin-alconna (>=0.46.3,<1.0.0)
Requires-Dist: nonebot-plugin-session (>=0.3.2)
Requires-Dist: nonebot-plugin-uninfo (>=0.6.0)
Requires-Dist: nonebot2 (>=2.3.3,<3.0.0)
Requires-Dist: ruamel-yaml (>=0.18.6,<0.19.0)
Requires-Dist: strenum (>=0.4.15,<0.5.0)
Requires-Dist: zhenxun-utils (>=0.2.2,<0.3.0)
Project-URL: Homepage, https://github.com/HibiKier/nonebot-plugin-zxpm
Project-URL: Repository, https://github.com/HibiKier/nonebot-plugin-zxpm
Description-Content-Type: text/markdown

<div align=center>

<img width="250" height="312" src="https://github.com/HibiKier/nonebot-plugin-zxpm/blob/main/docs_image/tt.jpg"/>

</div>

<div align="center">

<p>
  <img src="https://raw.githubusercontent.com/lgc-NB2Dev/readme/main/template/plugin.svg" alt="NoneBotPluginText">
</p>

# nonebot-plugin-zxpm

_✨ 基于 [NoneBot2](https://github.com/nonebot/nonebot2) 的一个 插件管理插件 ✨_

![python](https://img.shields.io/badge/python-v3.9%2B-blue)
![nonebot](https://img.shields.io/badge/nonebot-v2.1.3-yellow)
![onebot](https://img.shields.io/badge/onebot-v11-black)
[![license](https://img.shields.io/badge/license-AGPL3.0-FE7D37)](https://github.com/HibiKier/zhenxun_bot/blob/main/LICENSE)

</div>

## 📖 介绍

[小真寻](https://github.com/HibiKier/zhenxun_bot) 的插件权限管理系统，提供了

- **细致的插件开关（全局关闭可以使用群白名单忽略）**
- **Ban 群组/用户（消息屏蔽）**
- **插件 Cd，Count，Block 限制（配置文件）**
- 群管监测（权限自动设置）
- 用户权限设置（超级用户设置）
- 一个简单的帮助查看

继承了真寻的优良传统，高贵的**超级用户**不受权限控制，除非插件额外限制

> [!NOTE]
>
> <div align="center"><b>小真寻也很可爱呀，也会很喜欢你！</b></div>
>
> <div align="center">
> <img width="235" height="235" src="https://github.com/HibiKier/nonebot-plugin-zxpm/blob/main/docs_image/tt3.png"/>
> <img width="235" height="235" src="https://github.com/HibiKier/nonebot-plugin-zxpm/blob/main/docs_image/tt1.png"/>
> <img width="235" height="235" src="https://github.com/HibiKier/nonebot-plugin-zxpm/blob/main/docs_image/tt2.png"/>
> </div>

## 💿 安装

```python
pip install nonebot-plugin-zxpm
```

```python
nb plugin install nonebot-plugin-zxpm
```

## 🎁 使用

> [!IMPORTANT]
> ZXPM 对插件进行了分类  
> `NORMAL`: 普通插件，没有特定标记的情况下都为这个类型  
> `ADMIN`: 群组管理员插件  
> `SUPERUSER`: 超级用户插件  
> `SUPER_AND_ADMIN`: 超级用户用于与管理员插件  
> `DEPENDANT`: 依赖插件，一般为没有主动触发命令的插件，受权限控制  
> `HIDDEN`: 隐藏插件，一般为没有主动触发命令的插件，不受权限控制，如消息统计  
> `PARENT`: 父插件，仅仅标记
>
> ZXPM 权限管理严格  
> 普通用户无法查看`ADMIN`，`SUPERUSER`，`SUPER_AND_ADMIN`插件的帮助  
> 权限管理员用户无法查看`SUPERUSER`插件的帮助

## ⚙️ 配置

| 配置                    | 类型 |            默认值             | 说明                                                             |
| :---------------------- | :--: | :---------------------------: | ---------------------------------------------------------------- |
| zxpm_data_path          | str  |           data/zxpm           | 数据存储路径                                                     |
| zxpm_db_url             | str  | (`zxpm_data_path`)/db/zxpm.db | 数据库地址 URL，默认为 sqlite,存储路径在`zxpm_data_path`下       |
| zxpm_notice_info_cd     | int  |              300              | 群/用户权限检测等各种检测提示信息 cd，为 0 时或永久 ban 时不提醒 |
| zxpm_ban_reply          | str  |       才不会给你发消息.       | 用户被 ban 时回复消息，为空时不回复                              |
| zxpm_ban_level          | int  |               5               | 使用 ban 功能的对应权限                                          |
| zxpm_switch_level       | int  |               1               | 使用开关功能的对应权限                                           |
| zxpm_admin_default_auth | int  |               5               | 群组管理员默认权限                                               |
| zxpm_font               | str  |           msyh.ttc            | 作图时字体          
| zxpm_limit_superuser               | bool  |           False            | 是否限制超级用户                                                    |

## 🎉 帮助

| 指令 |    格式     | 权限等级 | 参数 | 作用                     | 示例                                                                                                                                                 |
| :--: | :---------: | :------: | :--: | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| zxpm | zxpm [名称] |    0     |  -s  | 提供一个简单详情帮助图片 | `zxpm Ban`: 查看 Ban 的用户帮助 <br> `zxpm Ban -s`: 查看 Ban 的超级用户帮助<br>`zxpm 40`: 查看 id 为 40 的插件帮助(id 通过给 bot 发送`插件列表`获取) |

> [!NOTE]
> 这里的指令只是写了个大概，功能开关指令比较复杂  
> 建议对 bot 发送 `zxpm ZXPM插件管理` 和 `zxpm ZXPM插件管理 -s` 来查看详细帮助  
> ZXPM 内部维护了一个插件数据库，收集所有含有`PluginMetaData`的插件  
> 对于其他插件，同样也可以使用`zxpm`来获取帮助信息

## 权限设置

|   指令   |         格式          | 权限等级  | 参数 | 作用                     | 示例               |
| :------: | :-------------------: | :-------: | :--: | ------------------------ | ------------------ |
| 添加权限 | 添加权限 [level] [at] | SUPERUSER |      | 为用户提供插件管理等权限 | `添加权限 5 @user` |
| 删除权限 |     删除权限 [at]     | SUPERUSER |      | 为用户提供插件管理等权限 | `删除权限 @user`   |

## 白名单设置

|   指令   |         格式          | 权限等级  | 参数 | 作用                     | 示例               |
| :------: | :-------------------: | :-------: | :--: | ------------------------ | ------------------ |
| 添加群白名单 | 添加群白名单 ?[gid] | SUPERUSER |      | 标记群为白名单中 | `添加群白名单`: 在群组中可以不加群号，默认当前群组<br>`添加群白名单 123123`: 指定群号 |
| 删除群白名单 |     删除群白名单 ?[gid]     | SUPERUSER |      | 删除群为白名单中 | 同上   |

## Ban/unBan

**群组管理员**

| 指令  |               格式               | 权限等级 | 参数  | 作用                                                | 示例                                                   |
| :---: | :------------------------------: | :------: | :---: | --------------------------------------------------- | ------------------------------------------------------ |
|  ban  | ban [At 用户] ?[-t [时长(分钟)]] |    5     | -t -g | 屏蔽用户或群组消息，权限等级低无法 Ban 等级高的用户 | `ban @用户`: 永久 ban<br>`ban @用户 -t 10`: ban 十分钟 |
| unban |         unban [At 用户]          |    5     |       | 解除蔽用户或群组消息 @user                          | `unban @用户`: 放出来                                  |

**超级用户**

```
ban [At用户/用户Id] ?[-t [时长]]
unban --id [idx]  : 通过id来进行unban操作
ban列表: 获取所有Ban数据

群组ban列表: 获取群组Ban数据
用户ban列表: 获取用户Ban数据

ban列表 -u [用户Id]: 查找指定用户ban数据
ban列表 -g [群组Id]: 查找指定群组ban数据
示例:
    ban列表 -u 123456789    : 查找用户123456789的ban数据
    ban列表 -g 123456789    : 查找群组123456789的ban数据

私聊下:
    示例:
    ban 123456789          : 永久拉黑用户123456789
    ban 123456789 -t 100   : 拉黑用户123456789 100分钟

    ban -g 999999              : 拉黑群组为999999的群组
    ban -g 999999 -t 100       : 拉黑群组为999999的群组 100分钟

    unban 123456789     : 从小黑屋中拉出来
    unban -g 999999     : 将群组9999999从小黑屋中拉出来
```

## 插件控制

**群组管理员**

```
格式:
开启/关闭[功能名称]   : 开关功能
开启/关闭所有插件     : 开启/关闭当前群组所有插件状态
醒来                 : 结束休眠
休息吧               : 群组休眠, 不会再响应命令

示例:
开启签到              : 开启签到
关闭签到              : 关闭签到
```

**超级用户**

```
插件列表
开启/关闭[功能名称] ?[-t ["private", "p", "group", "g"](关闭类型)] ?[-g 群组Id]

开启/关闭插件df[功能名称]: 开启/关闭指定插件进群默认状态
    = 开启插件echo -df
    = 关闭插件echo -df
开启/关闭所有插件df: 开启/关闭所有插件进群默认状态
开启/关闭所有插件:
    私聊中: 开启/关闭所有插件全局状态
    群组中: 开启/关闭当前群组所有插件状态

私聊下:
    示例:
    开启签到                : 全局开启签到
    关闭签到                : 全局关闭签到
    关闭签到 -t p           : 全局私聊关闭签到
    关闭签到 -g 12345678    : 关闭群组12345678的签到功能(普通管理员无法开启)

bot插件列表: bot插件列表状态  : bot插件列表
bot开启/关闭所有插件          : bot所有插件开关
bot开启/关闭插件[插件名称]    : bot插件开关
bot休眠                    : bot休眠，屏蔽所有消息
bot醒来                    : bot醒来
```

**可修改配置文件**

在`(zxpm_data_path)/configs`路径下有以 下 3 个配置文件，且文件中已提供参数解释  
默认路径: `data/zxpm/configs`

- `plugin2block.yaml`: 插件阻塞配置
  例如:

  ```
  sign_in:
    status: true
    check_type: ALL
    watch_type: USER
    result: "你签那么快干什么啦"
  ```

- `plugin2cd.yaml`: 插件 CD 配置
  例如:

  ```
  sign_in:
    status: true
    check_type: ALL
    watch_type: USER
    result: 告辞
    cd: 12
  ```

- `plugin2count.yaml`: 插件每日次数配置
  例如：

  ```
    help:
      status: false
      watch_type: GROUP
      result: 再看就揍死你
      max_count: 2
  ```

## ❤ 感谢

- 可爱的小真寻 Bot [`zhenxun_bot`](https://github.com/HibiKier/zhenxun_bot): 我谢我自己，桀桀桀

