|
|
|
import discord
|
|
|
|
|
|
|
|
from services.environment_service import EnvService
|
|
|
|
from typing import Callable
|
|
|
|
|
|
|
|
ADMIN_ROLES = EnvService.get_admin_roles()
|
|
|
|
DALLE_ROLES = EnvService.get_dalle_roles()
|
|
|
|
GPT_ROLES = EnvService.get_gpt_roles()
|
|
|
|
INDEX_ROLES = EnvService.get_index_roles()
|
|
|
|
TRANSLATOR_ROLES = EnvService.get_translator_roles()
|
|
|
|
SEARCH_ROLES = EnvService.get_search_roles()
|
|
|
|
ALLOWED_GUILDS = EnvService.get_allowed_guilds()
|
|
|
|
|
|
|
|
|
|
|
|
class Check:
|
|
|
|
@staticmethod
|
|
|
|
def check_admin_roles() -> Callable:
|
|
|
|
async def inner(ctx: discord.ApplicationContext):
|
|
|
|
if ADMIN_ROLES == [None]:
|
|
|
|
return True
|
|
|
|
|
|
|
|
if not any(role.name.lower() in ADMIN_ROLES for role in ctx.user.roles):
|
|
|
|
await ctx.defer(ephemeral=True)
|
|
|
|
await ctx.respond(
|
|
|
|
f"You don't have permission, list of roles is {ADMIN_ROLES}",
|
|
|
|
ephemeral=True,
|
|
|
|
delete_after=10,
|
|
|
|
)
|
|
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
|
|
return inner
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def check_dalle_roles() -> Callable:
|
|
|
|
async def inner(ctx: discord.ApplicationContext):
|
|
|
|
if DALLE_ROLES == [None]:
|
|
|
|
return True
|
|
|
|
if not any(role.name.lower() in DALLE_ROLES for role in ctx.user.roles):
|
|
|
|
await ctx.defer(ephemeral=True)
|
|
|
|
await ctx.respond(
|
|
|
|
f"You don't have permission, list of roles is {DALLE_ROLES}",
|
|
|
|
ephemeral=True,
|
|
|
|
delete_after=10,
|
|
|
|
)
|
|
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
|
|
return inner
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def check_gpt_roles() -> Callable:
|
|
|
|
async def inner(ctx: discord.ApplicationContext):
|
|
|
|
if GPT_ROLES == [None]:
|
|
|
|
return True
|
|
|
|
if not any(role.name.lower() in GPT_ROLES for role in ctx.user.roles):
|
|
|
|
await ctx.defer(ephemeral=True)
|
|
|
|
await ctx.respond(
|
|
|
|
f"You don't have permission, list of roles is {GPT_ROLES}",
|
|
|
|
ephemeral=True,
|
|
|
|
delete_after=10,
|
|
|
|
)
|
|
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
|
|
return inner
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def check_index_roles() -> Callable:
|
|
|
|
async def inner(ctx: discord.ApplicationContext):
|
|
|
|
if INDEX_ROLES == [None]:
|
|
|
|
return True
|
|
|
|
if not any(role.name.lower() in INDEX_ROLES for role in ctx.user.roles):
|
|
|
|
await ctx.defer(ephemeral=True)
|
|
|
|
await ctx.respond(
|
|
|
|
f"You don't have permission, list of roles is {INDEX_ROLES}",
|
|
|
|
ephemeral=True,
|
|
|
|
delete_after=10,
|
|
|
|
)
|
|
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
|
|
return inner
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def check_translator_roles() -> Callable:
|
|
|
|
async def inner(ctx: discord.ApplicationContext):
|
|
|
|
if TRANSLATOR_ROLES == [None]:
|
|
|
|
return True
|
|
|
|
if not any(
|
|
|
|
role.name.lower() in TRANSLATOR_ROLES for role in ctx.user.roles
|
|
|
|
):
|
|
|
|
await ctx.defer(ephemeral=True)
|
|
|
|
await ctx.respond(
|
|
|
|
f"You don't have permission, list of roles is {TRANSLATOR_ROLES}",
|
|
|
|
ephemeral=True,
|
|
|
|
delete_after=10,
|
|
|
|
)
|
|
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
|
|
return inner
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def check_search_roles() -> Callable:
|
|
|
|
async def inner(ctx: discord.ApplicationContext):
|
|
|
|
if SEARCH_ROLES == [None]:
|
|
|
|
return True
|
|
|
|
if not any(role.name.lower() in SEARCH_ROLES for role in ctx.user.roles):
|
|
|
|
await ctx.defer(ephemeral=True)
|
|
|
|
await ctx.respond(
|
|
|
|
f"You don't have permission, list of roles is {SEARCH_ROLES}",
|
|
|
|
ephemeral=True,
|
|
|
|
delete_after=10,
|
|
|
|
)
|
|
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
|
|
return inner
|