import json

from nonebot.adapters import Bot, Event
from nonebot.permission import SUPERUSER, Permission
from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN as _GROUP_ADMIN

from ATRI.configs.config import CONFIG_PATH


MASTER_FILE_PATH = CONFIG_PATH / "master.json"
if not MASTER_FILE_PATH.is_file():
    with open(MASTER_FILE_PATH, "w") as w:
        w.write(json.dumps(list()))


class MasterList:
    """检查当前事件是否属于主人"""

    __slots__ = ()

    async def __call__(self, bot: Bot, event: Event) -> bool:
        try:
            user_id = event.get_user_id()
        except Exception:
            return False

        data = json.loads(MASTER_FILE_PATH.read_bytes())
        return True if user_id in data else False


MASTER = SUPERUSER | Permission(MasterList())
GROUP_ADMIN = GROUP_OWNER | _GROUP_ADMIN
ADMIN = MASTER | GROUP_ADMIN