nonebot-plugin-flexperm

精细化的 NoneBot 权限管理插件


Keywords
nonebot, nonebot-plugin, nonebot2
License
MIT
Install
pip install nonebot-plugin-flexperm==0.6.0

Documentation

nonebot-plugin-flexperm

精细化的 NoneBot 权限管理插件。

提供对用户精确到人或群、对插件精确到指令或更细粒度的权限管理功能。

安装

  • 使用 nb-cli
nb plugin install nonebot-plugin-flexperm
  • 使用 poetry
poetry add nonebot-plugin-flexperm
  • 使用 pip
pip install nonebot-plugin-flexperm

依赖

依赖nonebot^2.0.0,支持的协议见这里

使用

本插件主要通过 NoneBot 的 require 机制向其他插件提供功能。本插件也提供了一组命令,用于直接管理权限配置。

from nonebot import require
require("nonebot_plugin_flexperm")
from nonebot_plugin_flexperm import register
P = register("my_plugin")

P是一个可调用对象,以权限名为参数调用即可得到相应的检查器。P的其他接口详见接口文档

from nonebot import on_command
cmd = on_command("my_command", permission=P("my_command"))

@cmd.handle()
async def _(bot, event):
    ...

这样,运行时只有具有my_plugin.my_command权限的用户或群才能使用该命令。

权限配置文件

权限配置文件使用 YAML 格式,详见权限配置文档。示例:

anyone:
  permissions:
    - my_plugin.help

group_admin:
  permissions:
    - my_plugin.my_command
    - another_plugin.*
    - -another_plugin.another_command

这个配置文件授予了所有用户my_plugin.help权限,同时授予了群管理员my_plugin.my_command权限和another_plugin下的所有子权限,但撤销another_plugin.another_command权限。

命令

权限配置文件可以在运行时修改,然后使用/flexperm.reload命令重新加载。

也可以通过命令编辑权限配置,详见命令文档

配置

本插件使用3个配置项,均为可选。如需修改,写入 NoneBot 项目环境文件.env.*即可。

  • flexperm_base: 权限配置文件所在目录,默认为permissions
  • flexperm_debug_check: 是否输出检查权限过程中的调试信息,默认为false。未启用 NoneBot 的调试模式时无效。
  • flexperm_default_adapter: 检查基于用户ID的权限配置时的默认适配器名,不区分大小写,默认为onebot

鸣谢