import json import os from typing import Callable, TypeVar from discord.ext import commands from exceptions import * from helpers import db_manager T = TypeVar("T") def is_owner() -> Callable[[T], T]: async def predicate(context: commands.Context) -> bool: with open(f"{os.path.realpath(os.path.dirname(__file__))}/../config.json") as file: data = json.load(file) if context.author.id not in data["owners"]: raise UserNotOwner return True return commands.check(predicate) def not_blacklisted() -> Callable[[T], T]: async def predicate(context: commands.Context) -> bool: if await db_manager.is_blacklisted(context.author.id): raise UserBlacklisted return True return commands.check(predicate)