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.14.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nonebot_plugin_manager-0.5.14-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_manager-0.5.14.tar.gz.

File metadata

  • Download URL: nonebot_plugin_manager-0.5.14.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.1 Windows/10

File hashes

Hashes for nonebot_plugin_manager-0.5.14.tar.gz
Algorithm Hash digest
SHA256 178ac89c86afb7a6b7f08bc3f0f9c7776d3da49c75e0d4bbc3d1029171b2ee96
MD5 a4d876320a4911c560765b76e1d43c20
BLAKE2b-256 c132c1da9b1b9903e79341c12f194dbe152ccc9cef3e801f6a014749acb32292

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nonebot_plugin_manager-0.5.14-py3-none-any.whl
Algorithm Hash digest
SHA256 83cbd5e92b142ddf76eb8f3aa9bcd36e8cdc59f8950bc564e011b52603b9fe16
MD5 bba798fd88f3bad4d6fe5af0b87948b2
BLAKE2b-256 bcffe29d200ce6ea8c2d679bbbf207b69d8eb43059f307e4ec4faf26ad9944e4

See more details on using hashes here.

Supported by

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