"""
权限校验与规则解析模块

提供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_GROUP_ID属性

    Returns:
        异步检查函数，私聊放行、群聊检查白名单
    """
    async def _check(bot: Bot, event: MessageEvent) -> bool:
        if not isinstance(event, GroupMessageEvent):
            return True
        # 单群模式：直接比较整数
        return event.group_id == config.ALLOWED_GROUP_ID
    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))
