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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file nonebot-plugin-manager-0.5.16.tar.gz.

File metadata

File hashes

Hashes for nonebot-plugin-manager-0.5.16.tar.gz
Algorithm Hash digest
SHA256 d5d833a5b405b7da5dffc124e740cfbdb3164aa5c43d26393f0d05cebb3dc999
MD5 9e7311d7e7fd6ea04d51c0f564118cf3
BLAKE2b-256 112ee910d2020da46585490e03e07933fa4b8c021d8d4bc77d104a9fe7c80fc0

See more details on using hashes here.

File details

Details for the file nonebot_plugin_manager-0.5.16-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_manager-0.5.16-py3-none-any.whl
Algorithm Hash digest
SHA256 f75dbfe96ec2308a7dea7019539e2e6a0725a13631573f29228f4005d837318a
MD5 02218797685e59df7ac6b3b2e0b4b760
BLAKE2b-256 f90dbe8ac56a1cb0bd40b0acb5b12b57faec6299941b0fb316c74d32c3ef639f

See more details on using hashes here.

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