本项目将对 PyPI 上的发行版 nonebot-plugin-rauthman 来源进行 deprecate 的处理。
由于本模块的性质,未来即使提交更新也仅对本仓库进行。
正在使用的 PyPI 发行版来源也应择日改为使用本 Git 来源。
基于 NoneBot2。
- 为 Matcher 或 MatcherGroup 配置一条或多条 Rule 来实现功能的授权管理
# MatcherGroup
from nonebot.plugin import MatcherGroup
from nonebot_plugin_rauthman import isInService
workers = MatcherGroup(
type="message", rule=isInService("module_name", 10)
) # Rule 自动套用到 MatcherGroup 下所有 Matcher
worker_1 = workers.on_regex(...)
worker_2 = workers.on_regex(...)
worker_3 = workers.on_regex(...)
worker_4 = workers.on_regex(...)
worker_5 = workers.on_regex(...)
worker_6 = workers.on_regex(...)
...
# Matcher
from nonebot.plugin import on_command
from nonebot_plugin_rauthman import isInService
worker = on_command(
"test", rule=isInService("module_name_A", 10) & isInService("module_name_B", 10)
) # 同时满足多个 Rule 才可触发
...
# Matcher
from nonebot_plugin_rauthman import isInService
from nonebot_plugin_translator import translator
translator.rule.checkers.add(
isInService("translator", 10)
) # 为具名的 Matcher 附加 RuleChecker
...
- 授权策略可选
根据可用功能
或根据服务级别
- 参数可完全自定义
class Config:
savedata: str = getattr(_config, "savedata", "") or ""
ram_policy: int = getattr(_config, "ram_policy", 0) or 0
ram_cmd: str = getattr(_config, "ram_cmd", "ram") or "ram"
ram_add: str = getattr(_config, "ram_add", "-a") or "-a"
ram_rm: str = getattr(_config, "ram_rm", "-r") or "-r"
ram_show: str = getattr(_config, "ram_show", "-s") or "-s"
ram_available: str = getattr(_config, "ram_available", "-v") or "-v"
建议使用 poetry
- 通过 poetry 添加到 NoneBot2 项目的
pyproject.toml
poetry add nonebot-plugin-rauthman
- 也可以通过 pip 从 PyPI 安装
pip install nonebot-plugin-rauthman
- 参照下文在 NoneBot2 项目的环境文件
.env.*
中添加配置项
自己看着办吧。
以下配置项皆为可选,即使不添加也可以直接使用默认值
# .env.prod
savedata = Yuni/savedata # 保存路径,相对路径,此处为保存至运行目录下的 "Yuni/savedata/" 下,默认为 ""
ram_policy = 0 # 授权策略 0 为根据可用功能 1 为根据服务级别,默认为 0
ram_cmd = ram # 指令名,或者叫触发词,默认为 ram
ram_add = -a # 启用功能(根据可用功能),默认为 -a
ram_rm = -r # 禁用功能(根据可用功能),默认为 -r
ram_show = -s # 展示群功能状态(根据可用功能),默认为 -s
ram_available = -v # 展示全局可用功能(根据可用功能),默认为 -v
为需要管理的 on_*
事件设置规则授权,示例意为将一个 on_command
事件划入一个名为 module_name
的功能,同时设置功能级别 1
from nonebot.plugin import on_command
from nonebot_plugin_rauthman import isInService
command = on_command("cmd", rule=isInService("module_name", 1))
这样,群聊必须被启用了该功能,或功能级别高于 1
才会进入事件处理(取决于当前应用的授权管理应用策略)
以 PyPI 发行版来源为例,基于以下配置文件和事件响应器
# .env.prod
ram_cmd = 功能 # 指令名,默认为 ram
ram_add = 开启 # 启用功能(根据可用功能),默认为 -a
ram_rm = 关闭 # 禁用功能(根据可用功能),默认为 -r
ram_show = 查询 # 展示群功能状态(根据可用功能),默认为 -s
ram_available = 全局查询 # 展示全局可用功能(根据可用功能),默认为 -v
from nonebot.plugin import on_notice
from nonebot_plugin_rauthman import isInService
notice = on_notice(rule=to_me() & isInService("戳一戳", 1))
- 这个插件可以做到什么?
RAM 可以实现对不同群,不同功能的控制 - 提示群聊未注册是怎么回事?
本地 JSON 文件中不存在该群群号,则会提示为群聊未注册
进行一次授权变更操作即可生成,如ram 0
- 谁可以开启/关闭功能?
SUPERUSERS
在.env.*
中定义,参考 配置 - 批量对群进行授权修改?
私聊 Bot 直接发送ram
并根据提示操作 - 我设置了
ram_policy = 1
,怎么设置群 Level?
例如在 Bot 所在群聊中发送ram 10
这样这个群的 Level 就被设定成10
默认的 Level 为0
授权修改操作与当前授权策略无关
- 如果我希望在一个群中,管理员和群主可以修改开关/设置群 Level 我该怎么办?
对源代码第101
行进行修改
permission: Permission = SUPERUSER # 参考 NoneBot2 文档 - 进阶 - 权限控制
- Mrs4s / go-cqhttp
- nonebot / nonebot2
- Sichongzou 对 README.md
小白案例
和常见问题
的贡献
如有优化建议请积极提交 Issues 或 Pull requests