Skip to content

Premium Nonebot Plugin Manager base on import hook

License

Notifications You must be signed in to change notification settings

nonepkg/plugin-manager

Repository files navigation

logo

Premium Nonebot Plugin Manager

NoneBot 2非侵入式插件管理器

License Python Version NoneBot Version Pypi Version

安装

插件重写中,之前版本的问题不再回复。

从 PyPI 安装(推荐)

  • 使用 nb-cli
nb plugin install nonebot-plugin-manager
  • 使用 pdm
pdm add nonebot-plugin-manager

从 GitHub 安装(不推荐)

pdm add git+https://github.com/nonepkg/plugin-manager

使用

命令

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

  • npm block/disable <plugin ...>禁用插件(需要权限)

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

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

  • npm unban <user ...> user :ms.at or platform/id

原理

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

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

TODO

  • 新的权限管理
  • 提供自动授予群管理员群内 write 权限的配置项

缺陷

  • 无法停用 Matcher 以外的机器人行为(如 APScheduler )