Nonebot Plugin Manager base on import hook
Project description
安装
从 PyPI 安装(推荐)
- 使用 nb-cli
nb plugin install nonebot_plugin_manager
- 使用 poetry
poetry add nonebot_plugin_manager
- 使用 pip
pip install nonebot_plugin_manager
从 GitHub 安装(不推荐)
git clone https://github.com/Jigsaw111/nonebot_plugin_manager.git
使用
使用前请先确保命令前缀为空,否则请在以下命令前加上命令前缀 (默认为 /
)。
-
npm list
查看当前群插件列表 -
-s, --store
可选参数,查看 Nonebot 插件商店(仅超级用户可用)
-
-d, --default
可选参数,管理默认设置(仅超级用户可用)
-
-g group_id, --group group_id
可选参数,管理指定群设置(仅超级用户可用)
-
npm block 插件名...
屏蔽当前群插件 (仅群管及超级用户可用) -
-a, --all
可选参数,全选插件
-
-d, --default
可选参数,管理默认设置 (仅超级用户可用)
-
-g group_id, --group group_id
可选参数,管理指定群设置(仅超级用户可用)
-
npm unblock 插件名...
启用当前群插件 (仅群管及超级用户可用) -
-a, --all
可选参数,全选插件
-
-d, --default
可选参数,管理默认设置 (仅超级用户可用)
-
-g group_id, --group group_id
可选参数,管理指定群设置(仅超级用户可用)
-
npm info 插件名
查询插件信息 (仅超级用户可用)
以下功能尚未实现
-
npm install 插件名...
安装插件 (仅超级用户可用) -
-i index, --index index
指定 PyPI 源
-
npm update 插件名...
更新插件 (仅超级用户可用) -
-i index, --index index
指定 PyPI 源
-
-a, --all
可选参数,全选插件
-
npm uninstall 插件名...
卸载插件 (仅超级用户可用) -
-a, --all
可选参数,全选插件
导出
from nonebot import require
export = require("nonebot_plugin_manager")
# 启用/禁用插件
export.block_plugin(
plugins: Iterable[str],
type: Optional[str] = None,
user_id: Optional[int] = None,
group_id: Optional[int] = None,
) -> Dict[str, Optional[bool]]:
export.unblock_plugin(
plugins: Iterable[str],
type: Optional[str] = None,
user_id: Optional[int] = None,
group_id: Optional[int] = None,
) -> Dict[str, Optional[bool]]:
# 获取指定会话插件列表
export.get_plugin_list(
type: Optional[str] = None,
user_id: Optional[int] = None,
group_id: Optional[int] = None,
) -> Dict[str, bool]:
Q&A
- 这是什么?
基于 import hook 的插件管理器,能够在不重启 nonebot2 的情况下分群管理插件。 - 有什么用?
在 nonebot2 仍然缺乏插件管理机制的时期暂时充当插件管理器。 - 自造 Rule 不是更好?
Rule 当然更好且更有效率,但是 Rule 是一种侵入式的插件管理方式,需要用户自行修改其他插件,这对于管理从 pypi 安装的插件来说相对复杂。而使用本插件,你不需要修改其他插件的任何内容,更符合插件之间松耦合的设计原则。
Thanks
展开更多
原理
使用 run_preprocessor
装饰器,在 Matcher 运行之前检测其所属的 Plugin 判断是否打断。
事实上 Nonebot 还是加载了插件,所以只能算是屏蔽而非卸载。
以下功能尚未实现
当然,你也可以使用 npm uninstall
命令来真正卸载插件,但我不建议你这样做,因为该命令将会重启 Nonebot 。
To Do
- 分群插件管理
- 安装卸载插件
Bug
- 无法停用 Matcher 以外的机器人行为(如 APSchedule )
解决方法: 暂无 - 任何人都可以屏蔽/启用插件
- 如果加载了内置插件将会导致错误
解决方法: 问低调佬
Changelog
- 210417 0.4.0-alpha.1
-
- 配置文件格式更换为
.yml
- 配置文件格式更换为
-
- list/block/unblock 新增
globally
选项,优先级为 global > user/group > default
- list/block/unblock 新增
-
- 重构代码,分离 handle 与 data
-
- block/unblock 新增
--reverse
选项,可反选插件
- block/unblock 新增
- 210415
-
- 不再将没有 Matcher 的插件添加到插件列表。
- 210403
-
- 分离默认设置与私聊设置,默认设置的键值改为
default
- 分离默认设置与私聊设置,默认设置的键值改为
- 210402
-
- 修复 nonebot 2.0.0a13 更新导致的 bug。
- 210331
-
- 添加 logo。
- 210330
-
- 修复禁用/启用颠倒的 bug。
- 210329
-
- 修复 block/unblock 指令中的 -a 参数无效的 bug,修复文档中导出部分的错误。
- 210320
-
- 新增
get_group_plugin_list
的 export 用于获取群插件列表。
- 新增
- 210317
-
- 调整项目结构,将绝大多数数据处理操作移至 data,handle 只负责调用;修改 export,不再对其他插件暴露底层接口。
- 210314
-
- 修复
npm list
的 --group 参数不起作用的 bug
- 修复
-
- 新增
info
子命令,用于查询插件信息
- 新增
- 210313
-
- 实现爬取插件商店列表
-
- 新增 export 导出给其他插件
- 210312
-
setting.json
重命名为plugin_list.json
,结构改为plugin:{group_id:true,group_id:false}
- 210310 0.3.0
-
- 将__init__.py分离成 setting, command, nb 三个文件
- 210310 0.2.0
-
- Matcher 类型更改为 shell_command
-
- 使用
setting.json
作为配置文件,基本结构为group_id:{plugin:true,plugin:false}
- 使用
- 210307 0.1.0
-
- 上架插件商店
-
- 确定了通过
run_preprocessor
屏蔽 Matcher 的基本原理
- 确定了通过
-
- 使用
block_list
作为全局设置(即只屏蔽 block_list 中的插件)
- 使用
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for nonebot_plugin_manager-0.4.0a3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fa5631b5904b1dc1d02a8cfc1c66d54fa7fcf2e4f25a9ed29add2ae82d6e2cb |
|
MD5 | 26051fb1d124d2b0b608d47980163e06 |
|
BLAKE2b-256 | ee10e389e2ad40685f1e7dac934bda7675ed6aca9ca74532279a36ad08ffb145 |
Close
Hashes for nonebot_plugin_manager-0.4.0a3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8117a76f79caaeb03b99fdebc392748cf72637f0e277881cc4e218b713553ac6 |
|
MD5 | 8dc7e300129e12dae5efb484be184c53 |
|
BLAKE2b-256 | f6327d5d7de0100d7b97653b44baacbd6cfe51b15d6f4ef767855bef93b18603 |