- 基于规则的授权管理
建议使用 poetry
- 通过 poetry 添加到
nonebot2项目的pyproject.toml
poetry add nonebot-plugin-rauthman
- 也可以通过 pip 从 PyPI 安装
pip install nonebot-plugin-rauthman
- 在
nonebot2项目中设置nonebot.load_plugin()
当使用 nb-cli 添加本插件时,该条会被自动添加
nonebot.load_plugin('nonebot_plugin_rauthman')
- 参照下文在
nonebot2项目的环境文件.env.*中添加配置项
-
授权管理信息保存位置(必须):
savedata: str保存相对路径,示例意为保存至运行目录下的Yuni/savedata目录
savedata = Yuni/savedata
-
授权管理应用策略(可选):
0根据可用功能授权,当功能在群聊的可用功能列表内时为可用(默认值)1根据功能级别授权,当群聊级别不低于功能所需级别时为可用
auth_policy = 0
-
授权管理指令所需的参数(可选):
auth_command: str指令名,默认为authauth_add: str启用功能(根据可用功能授权),默认为-aauth_rm: str禁用功能(根据可用功能授权),默认为-rmauth_show: str展示群功能状态(根据可用功能授权),默认为-sauth_available: str展示全局可用功能(根据可用功能授权),默认为-av
auth_command = auth
auth_add = -a
auth_rm = -rm
auth_show = -s
auth_available = -av
- 为需要管理的
on_*事件设置规则授权,示例意为将一个on_command事件划入一个名为servicename的功能,同时设置功能级别1
from nonebot.plugin import on_command
from nonebot_plugin_rauthman import isInService
command = on_command('cmd', rule=isInService('servicename', 1))
- 这样,群聊必须被启用了该功能,或功能级别高于指定值(取决于当前应用的授权管理应用策略)才会进入事件处理
- 基于以下配置文件
auth_command = 功能 # 指令名,默认为 auth
auth_add = 开启 # 启用功能(根据可用功能授权),默认为 -a
auth_rm = 关闭 # 禁用功能(根据可用功能授权),默认为 -rm
auth_show = 查询 # 展示群功能状态(根据可用功能授权),默认为 -s
auth_available = 全局查询 # 展示全局可用功能(根据可用功能授权),默认为 -av
- 事件响应器如下
notice = on_notice(rule=to_me()&isInService('戳一戳', 1), priority=1, block=True)-
这个插件可以做到什么?
RAM可以实现对不同群,不同功能的控制
-
提示群聊未注册是怎么回事?
本地json文件中没有对群进行注册,bot第一次加群请先 auth-a xxx 或者 auth-rm xxx
-
谁可以开启/关闭功能?
SUPERUSERS 在 .env.* 中定义
-
批量录入群注册信息?
私聊Bot 直接发送 auth 按照提示操作即可
-
我设置了 auth_policy = 1,怎么设置群level?
例子:auth 10
这样这个群的level就被设定成10 level默认为0
-
如果我希望在一个群中,管理员和群主可以修改开关/设置群level,我该怎么办?
源代码第108行 修改
manager = on_command(options.command, permission=SUPERUSER, block=True)
为
manager = on_command(options.command, permission=SUPERUSER | OWNER | ADMIN, block=True)
如有优化建议请积极提交 Issues 或 Pull requests
