46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""
|
||
权限校验与规则解析模块
|
||
|
||
提供NoneBot命令的权限检查规则函数,包括:
|
||
- 群组权限检查(通用)
|
||
|
||
所有规则函数返回Rule对象,用于NoneBot的matcher定义。
|
||
"""
|
||
|
||
from typing import Callable
|
||
from nonebot.rule import Rule
|
||
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageEvent
|
||
|
||
|
||
def _check_group_allowed(config) -> Callable:
|
||
"""生成群组权限检查函数(内部复用,消除重复逻辑)。
|
||
|
||
Args:
|
||
config: Config实例,需包含ALLOWED_GROUPS属性
|
||
|
||
Returns:
|
||
异步检查函数,私聊放行、群聊检查白名单
|
||
"""
|
||
async def _check(bot: Bot, event: MessageEvent) -> bool:
|
||
if not isinstance(event, GroupMessageEvent):
|
||
return True
|
||
return str(event.group_id) in config.ALLOWED_GROUPS
|
||
return _check
|
||
|
||
|
||
def check_permission() -> Rule:
|
||
"""检查群组是否有权限使用抽卡功能。"""
|
||
from .config import Config
|
||
config = Config()
|
||
return Rule(_check_group_allowed(config))
|
||
|
||
|
||
def check_rank_permission() -> Rule:
|
||
"""检查用户是否有权限查看排行榜。
|
||
|
||
当前与check_permission逻辑相同,保留为独立入口便于未来扩展。
|
||
"""
|
||
from .config import Config
|
||
config = Config()
|
||
return Rule(_check_group_allowed(config))
|