YusarinBot/cogs/cogCategory.py

92 lines
3.5 KiB
Python

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"]),
)
)
# =========================================================================================================================