diff --git a/cogs/commands/__init__.py b/cogs/commands/__init__.py index 5c1d3f2..16d5af9 100644 --- a/cogs/commands/__init__.py +++ b/cogs/commands/__init__.py @@ -7,6 +7,7 @@ from cogs.commands.refresh import RefreshCog from cogs.commands.remove import RemoveCog from cogs.commands.request import RequestCog from cogs.commands.set import SetCog +from cogs.commands.settings import SettingsCog from cogs.commands.test import TestCog from cogs.commands.time import TimeCog from cogs.commands.view import ViewCog @@ -21,6 +22,7 @@ def setup(bot: commands.Bot) -> None: bot.add_cog(RemoveCog()) bot.add_cog(RequestCog(bot)) bot.add_cog(SetCog()) + bot.add_cog(SettingsCog()) bot.add_cog(TestCog(bot)) bot.add_cog(TimeCog()) bot.add_cog(ViewCog()) diff --git a/cogs/commands/settings.py b/cogs/commands/settings.py new file mode 100644 index 0000000..389146e --- /dev/null +++ b/cogs/commands/settings.py @@ -0,0 +1,42 @@ +"""Contains commands and views for settings commands.""" + +import nextcord +from nextcord.ext import commands + +from DakinySettings import settings +from utils import GUILDS + + +class SettingsCog(commands.Cog, name="Settings Commands"): + """Class holds settings commands.""" + + def __init__(self) -> None: + """Default constructor for SettingsCog class. Does nothing.""" + + @nextcord.slash_command(guild_ids=GUILDS, default_member_permissions=nextcord.Permissions(administrator=True)) + async def settings(self, interaction: nextcord.Interaction) -> None: + """Parent slash command for settings. Never called.""" + + @settings.subcommand() + async def channel_ids(self, interaction: nextcord.Interaction) -> None: + """Subcommand parent. Never called.""" + + @channel_ids.subcommand(description="Sets channel that bot sends verification requests to admins.") + async def admin( + self, + interaction: nextcord.Interaction, + channel: nextcord.TextChannel = nextcord.SlashOption( + required=False, description="Channel to set to. If left blank, uses current channel." + ), + ) -> None: + """ + Sets DakinySettings channel_ids.admin value to channel id or current channel id. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + channel (nextcord.TextChannel, optional): Channel to set in settings. + """ + channel_id = interaction.channel_id if channel is None else channel.id + settings.channel_ids.admin = channel_id + settings.save() + await interaction.response.send_message(f"Admin verification channel set to <#{channel_id}>.", ephemeral=True)