|
1 | 1 | <div align="center">
|
2 |
| - <img width="200" src="docs/logo.png" alt="logo"></br> |
| 2 | + <img width="200" src="https://raw.githubusercontent.com/nonepkg/plugin-manager/master/docs/logo.png" alt="logo"></br> |
3 | 3 |
|
4 |
| -# Nonebot Plugin Manager |
| 4 | +# Premium Nonebot Plugin Manager |
5 | 5 |
|
6 |
| -基于 [nonebot2](https://github.com/nonebot/nonebot2) 和 [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) 的**非侵入式**插件管理器 |
| 6 | +[NoneBot 2](https://github.com/nonebot/nonebot2) 的**非侵入式**插件管理器 |
7 | 7 |
|
8 | 8 | [](LICENSE)
|
9 |
| - |
10 |
| - |
| 9 | + |
| 10 | + |
11 | 11 | 
|
12 | 12 |
|
13 | 13 | </div>
|
14 | 14 |
|
15 | 15 | ## 安装
|
16 | 16 |
|
17 |
| -**插件仍在~~快速~~开发中,遇到问题还请务必提 issue。** |
| 17 | +*插件重写中,之前版本的问题不再回复。* |
18 | 18 |
|
19 | 19 | ### 从 PyPI 安装(推荐)
|
20 | 20 |
|
21 |
| -- 使用 nb-cli |
| 21 | +- 使用 nb-cli |
22 | 22 |
|
23 | 23 | ```bash
|
24 | 24 | nb plugin install nonebot-plugin-manager
|
25 | 25 | ```
|
26 | 26 |
|
27 |
| -- 使用 poetry |
| 27 | +- 使用 pdm |
28 | 28 |
|
29 | 29 | ```bash
|
30 |
| -poetry add nonebot-plugin-manager |
31 |
| -``` |
32 |
| - |
33 |
| -- 使用 pip |
34 |
| - |
35 |
| -```bash |
36 |
| -pip install nonebot-plugin-manager |
| 30 | +pdm add nonebot-plugin-manager |
37 | 31 | ```
|
38 | 32 |
|
39 | 33 | ### 从 GitHub 安装(不推荐)
|
40 | 34 |
|
41 | 35 | ```bash
|
42 |
| -git clone https://github.com/Jigsaw111/nonebot_plugin_manager.git |
| 36 | +pdm add git+https://github.com/nonepkg/plugin-manager |
43 | 37 | ```
|
44 | 38 |
|
45 | 39 | ## 使用
|
46 | 40 |
|
47 |
| -### 权限 |
48 |
| - |
49 |
| -权限与 UNIX 的权限类似,分为三种用户:超级用户、用户、群。 |
50 |
| - |
51 |
| -每种用户包含读、写、执行 3 个权限,分别对应数字 4、2、1,将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。 |
52 |
| - |
53 |
| -关于会话中使用什么模式,可参照下表: |
54 |
| - |
55 |
| -| 仅供参考 | 私聊读 | 群聊读 | 私聊写 | 群聊写 | 私聊执行 | 群聊执行 | |
56 |
| -| -------- | -------- | ------ | -------- | --------- | -------- | --------- | |
57 |
| -| 超级用户 | 超级用户 | 群 | 超级用户 | 超级用户 | 超级用户 | 群 | |
58 |
| -| 用户 | 用户 | 群 | 用户 | 无权限 | 用户 | 用户 & 群 | |
59 |
| -| 群管理员 | 不存在 | 群 | 不存在 | 用户 & 群 | 不存在 | 用户 & 群 | |
60 |
| - |
61 |
| -包含 Matcher 的插件默认权限为`755`,不含 Matcher 的插件默认权限为`311`。 |
62 |
| - |
63 |
| -> 例:`npm chmod 757 nonebot_plugin_nodice`命令可将 nonebot_plugin_nodice 的权限设置为`757` |
64 |
| -> 即超级用户可写可读可执行,用户可读可执行,群可写可读可执行。 |
65 |
| -
|
66 |
| -只有超级用户可以修改插件的权限,可以使用绝对模式(八进制数字模式)~~,符号模式~~指定文件的权限。 |
67 |
| - |
68 | 41 | ### 命令
|
69 | 42 |
|
70 | 43 | **使用前请先确保命令前缀为空,否则请在以下命令前加上命令前缀 (默认为`/`)。**
|
71 | 44 |
|
72 |
| -- `npm ls`查看当前会话插件列表 |
73 |
| - - `-s, --store`互斥参数,查看插件商店列表(仅超级用户可用) |
74 |
| - - `-u <user_id>, --user <user_id>`互斥参数,查看指定用户插件列表(仅超级用户可用) |
75 |
| - - `-g <group_id>, --group <group_id>`互斥参数,查看指定群插件列表(仅超级用户可用) |
76 |
| - - `-a, --all`可选参数,查看所有插件(包括不含 Matcher 的插件) |
77 |
| - |
78 |
| -- `npm info <插件名>`查询插件信息 (仅超级用户可用) |
79 |
| - |
80 |
| -- `npm chmod <mode> <plugin ...>`设置插件权限(仅超级用户可用) |
81 |
| - - `mode`必选参数,需要设置的权限,参考上文 |
82 |
| - - `plugin ...`必选参数,需要设置的插件名 |
83 |
| - - `-a, --all`可选参数,全选插件 |
84 |
| - - `-r, --reverse`可选参数,反选插件 |
85 |
| - |
86 |
| -- `npm block <plugin ...>`禁用当前会话插件(需要权限) |
| 45 | +- `npm block/disable <plugin ...>`禁用当前会话插件(需要权限) |
87 | 46 | - `plugin ...`必选参数,需要禁用的插件名
|
88 | 47 | - `-a, --all`可选参数,全选插件
|
89 | 48 | - `-r, --reverse`可选参数,反选插件
|
90 | 49 | - `-u <user_id ...>, --user <user_id ...>`可选参数,管理指定用户设置(仅超级用户可用)
|
91 | 50 | - `-g <group_id ...>, --group <group_id ...>`可选参数,管理指定群设置(仅超级用户可用)
|
92 | 51 |
|
93 |
| -- `npm unblock <plugin ...>`启用当前会话插件(需要权限) |
| 52 | +- `npm unblock/enable <plugin ...>`启用当前会话插件(需要权限) |
94 | 53 | - `plugin ...`必选参数,需要禁用的插件名
|
95 | 54 | - `-a, --all`可选参数,全选插件
|
96 | 55 | - `-r, --reverse`可选参数,反选插件
|
97 | 56 | - `-u <user_id ...>, --user <user_id ...>`可选参数,管理指定用户设置(仅超级用户可用)
|
98 | 57 | - `-g <group_id ...>, --group <group_id ...>`可选参数,管理指定群设置(仅超级用户可用)
|
99 | 58 |
|
100 |
| -<!-- TODO |
101 |
| -
|
102 |
| -- `npm install plugin...`安装插件(仅超级用户可用) |
103 |
| - - `-i index, --index index`指定 PyPI 源 |
104 |
| -
|
105 |
| -- `npm uninstall plugin...`卸载插件(仅超级用户可用) |
106 |
| - - `-a, --all`可选参数,全选插件 |
107 |
| -
|
108 |
| ---> |
109 |
| - |
110 |
| -## Q&A |
111 |
| - |
112 |
| -- **这是什么?** |
113 |
| - 基于 import hook 的插件管理器,能够在不重启 NoneBot2 的情况下分群管理插件。 |
114 |
| -- **有什么用?** |
115 |
| - 在 NoneBot2 仍然缺乏插件管理机制的时期暂时充当插件管理器。 |
116 |
| -- **自造 Rule 不是更好?** |
117 |
| - Rule 当然更好且更有效率,但是 Rule 是一种**侵入式**的插件管理方式,需要用户自行修改其他插件的源码,这对于管理从 PyPI 安装的插件来说相对复杂。而使用本插件,你不需要修改其他插件的任何内容,更符合插件之间**松耦合**的设计原则。 |
118 |
| - |
119 |
| -<details> |
120 |
| -<summary>展开更多</summary> |
121 |
| - |
122 | 59 | ## 原理
|
123 | 60 |
|
124 | 61 | 使用`run_preprocessor`装饰器,在 Matcher 运行之前检测其所属的 Plugin 判断是否打断。
|
125 | 62 |
|
126 | 63 | 事实上 Nonebot 还是加载了插件,所以只能算是**屏蔽**而非**卸载**。
|
127 | 64 |
|
128 |
| -<!-- TODO |
129 |
| -
|
130 |
| -当然,你也可以使用`npm uninstall`命令来真正卸载插件,但我不建议你这样做,因为该命令将会重启 Nonebot 。 |
131 |
| -
|
132 |
| ---> |
133 |
| - |
134 |
| -## To Do |
| 65 | +## TODO |
135 | 66 |
|
136 |
| -- [x] 分群插件管理 |
137 |
| -- [ ] 完善权限系统 |
| 67 | +- [ ] 新的权限管理 |
138 | 68 | - [ ] 设置插件别名
|
139 | 69 |
|
140 |
| -*咕咕咕* |
141 |
| - |
142 |
| -- [ ] 安装卸载插件 |
143 |
| - |
144 |
| -## Bug |
145 |
| - |
146 |
| -- [ ] 无法停用 Matcher 以外的机器人行为(如 APScheduler ) |
147 |
| - **解决方法:** 暂无 |
| 70 | +## 缺陷 |
148 | 71 |
|
149 |
| -</details> |
| 72 | +- 无法停用 Matcher 以外的机器人行为(如 APScheduler ) |
0 commit comments