from discord import ApplicationContext, CategoryChannel, Option, SlashCommandGroup from discord.ext import commands from functions import ( getMsg, guildConfGet, guildConfReset, guildConfSet, loadJson, makeEmbed, strToColor, ) # ========================================================================================================================= class CogCategory(commands.Cog): def __init__(self, client): self.client = client category = SlashCommandGroup( "category", "Commands related to parent channels category" ) @category.command( name="set", description="Select the voice channel that will be parent to private ones", ) async def category_set(self, ctx: ApplicationContext, category: Option(CategoryChannel, "Parent Channel Category")): # type: ignore config = loadJson("config.json") if ctx.guild is not None: guildConfSet(ctx.guild, "category", category.id) await ctx.respond( embed=makeEmbed( title=getMsg("set_category_title", ctx.guild), description=getMsg("set_category_description", ctx.guild).format( category.name ), color=strToColor(config["color_ok"]), ) ) if guildConfGet(ctx.guild, "channel") is None: await ctx.respond( embed=makeEmbed( title=getMsg("hint_none_channel_title", ctx.guild), description=getMsg("hint_none_channel_description", ctx.guild), color=strToColor(config["color_warn"]), ) ) else: await ctx.respond( embed=makeEmbed( title=getMsg("dm_title", ctx.guild), description=getMsg("dm_description", ctx.guild), color=strToColor(config["color_error"]), ) ) @category.command( name="reset", description="Reset the currently selected parent channel category" ) async def category_reset(self, ctx: ApplicationContext): # type: ignore config = loadJson("config.json") if ctx.guild is not None: if guildConfGet(ctx.guild, "category") is not None: guildConfReset(ctx.guild, "category") await ctx.respond( embed=makeEmbed( title=getMsg("reset_category_title", ctx.guild), description=getMsg("reset_category_description", ctx.guild), color=strToColor(config["color_ok"]), ) ) else: await ctx.respond( embed=makeEmbed( title=getMsg("hint_none_category_title", ctx.guild), description=getMsg("hint_none_category_description", ctx.guild), color=strToColor(config["color_warn"]), ) ) else: await ctx.respond( embed=makeEmbed( title=getMsg("dm_title", ctx.guild), description=getMsg("dm_description", ctx.guild), color=strToColor(config["color_error"]), ) ) # =========================================================================================================================