refactor: onmyoji gacha plugin overhaul (gacha-refactor)
This commit is contained in:
45
danding_bot/plugins/onmyoji_gacha/rules.py
Normal file
45
danding_bot/plugins/onmyoji_gacha/rules.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""
|
||||
权限校验与规则解析模块
|
||||
|
||||
提供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))
|
||||
Reference in New Issue
Block a user