Skip to main content

Nonebot Plugin Manager base on import hook

Project description

logo

Nonebot Plugin Manager

基于 nonebot2go-cqhttp非侵入式插件管理器

License Python Version NoneBot Version Pypi Version

安装

插件仍在快速开发中,遇到问题还请务必提 issue。

从 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

使用

权限

权限与 UNIX 的权限类似,分为三种用户:超级用户、用户、群。

每种用户包含读、写、执行 3 个权限,分别对应数字 4、2、1,将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。

关于会话中使用什么模式,可参照下表:

仅供参考 私聊读 群聊读 私聊写 群聊写 私聊执行 群聊执行
超级用户 超级用户 超级用户 超级用户 超级用户
用户 用户 用户 无权限 用户 用户 & 群
群管理员 不存在 不存在 用户 & 群 不存在 用户 & 群

包含 Matcher 的插件默认权限为755,不含 Matcher 的插件默认权限为311

例:npm chmod 757 nonebot_plugin_nodice命令可将 nonebot_plugin_nodice 的权限设置为757 即超级用户可写可读可执行,用户可读可执行,群可写可读可执行。

只有超级用户可以修改插件的权限,可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

命令

使用前请先确保命令前缀为空,否则请在以下命令前加上命令前缀 (默认为/)。

  • npm ls查看当前会话插件列表

    • -s, --store互斥参数,查看插件商店列表(仅超级用户可用)
    • -u <user_id>, --user <user_id>互斥参数,查看指定用户插件列表(仅超级用户可用)
    • -g <group_id>, --group <group_id>互斥参数,查看指定群插件列表(仅超级用户可用)
    • -a, --all可选参数,查看所有插件(包括不含 Matcher 的插件)
  • npm info <插件名>查询插件信息 (仅超级用户可用)

  • npm chmod <mode> <plugin ...>设置插件权限(仅超级用户可用)

    • mode必选参数,需要设置的权限,参考上文
    • plugin ...必选参数,需要设置的插件名
    • -a, --all可选参数,全选插件
    • -r, --reverse可选参数,反选插件
  • npm block <plugin ...>禁用当前会话插件(需要权限)

    • plugin ...必选参数,需要禁用的插件名
    • -a, --all可选参数,全选插件
    • -r, --reverse可选参数,反选插件
    • -u <user_id ...>, --user <user_id ...>可选参数,管理指定用户设置(仅超级用户可用)
    • -g <group_id ...>, --group <group_id ...>可选参数,管理指定群设置(仅超级用户可用)
  • npm unblock <plugin ...>启用当前会话插件(需要权限)

    • plugin ...必选参数,需要禁用的插件名
    • -a, --all可选参数,全选插件
    • -r, --reverse可选参数,反选插件
    • -u <user_id ...>, --user <user_id ...>可选参数,管理指定用户设置(仅超级用户可用)
    • -g <group_id ...>, --group <group_id ...>可选参数,管理指定群设置(仅超级用户可用)

Q&A

  • 这是什么?
    基于 import hook 的插件管理器,能够在不重启 NoneBot2 的情况下分群管理插件。
  • 有什么用?
    在 NoneBot2 仍然缺乏插件管理机制的时期暂时充当插件管理器。
  • 自造 Rule 不是更好?
    Rule 当然更好且更有效率,但是 Rule 是一种侵入式的插件管理方式,需要用户自行修改其他插件的源码,这对于管理从 PyPI 安装的插件来说相对复杂。而使用本插件,你不需要修改其他插件的任何内容,更符合插件之间松耦合的设计原则。
展开更多

原理

使用run_preprocessor装饰器,在 Matcher 运行之前检测其所属的 Plugin 判断是否打断。

事实上 Nonebot 还是加载了插件,所以只能算是屏蔽而非卸载

To Do

  • 分群插件管理
  • 完善权限系统
  • 设置插件别名

咕咕咕

  • 安装卸载插件

Bug

  • 无法停用 Matcher 以外的机器人行为(如 APScheduler )
    解决方法: 暂无

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot-plugin-manager-0.5.16.tar.gz (10.2 kB view hashes)

Uploaded Source

Built Distribution

nonebot_plugin_manager-0.5.16-py3-none-any.whl (10.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page