diff --git a/cogs/commands/settings.py b/cogs/commands/settings.py index f67dbce..3880bb5 100644 --- a/cogs/commands/settings.py +++ b/cogs/commands/settings.py @@ -142,3 +142,160 @@ class SettingsCog(commands.Cog, name="Settings Commands"): settings.channel_ids.voting = channel_id settings.save() await interaction.response.send_message(f"Voting channel set to <#{channel_id}>.", ephemeral=True) + + @settings.subcommand() + async def event_settings(self, interaction: nextcord.Interaction) -> None: + """Subcommand parent. Never called.""" + + @event_settings.subcommand(description="Sets Event Host Points value.") + async def host_points( + self, + interaction: nextcord.Interaction, + points: int = nextcord.SlashOption( + required=True, description="Number of Event Points a host earns when hosting event.", min_value=0 + ), + ) -> None: + """ + Sets DakinySettings event_settings.host_points to the given number of points. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + points (nextcord.TextChannel): Number of points to set. + """ + settings.event_settings.host_points = points + settings.save() + await interaction.response.send_message(f"Event Host Points set to {points}.", ephemeral=True) + + @event_settings.subcommand(description="Sets Event Participation Points value.") + async def participate_points( + self, + interaction: nextcord.Interaction, + points: int = nextcord.SlashOption( + required=True, + description="Number of Event Points a participant earns when attending an event.", + min_value=0, + ), + ) -> None: + """ + Sets DakinySettings event_settings.participate_points to the given number of points. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + points (nextcord.TextChannel): Number of points to set. + """ + settings.event_settings.participate_points = points + settings.save() + await interaction.response.send_message(f"Event Participation Points set to {points}.", ephemeral=True) + + @event_settings.subcommand(description="Sets Event Weekly Limit value.") + async def weekly_limit( + self, + interaction: nextcord.Interaction, + points: int = nextcord.SlashOption( + required=True, description="Number of Event Points a clan member can earn in a week.", min_value=0 + ), + ) -> None: + """ + Sets DakinySettings event_settings.weekly_limit to the given number of points. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + points (nextcord.TextChannel): Number of points to set. + """ + settings.event_settings.weekly_limit = points + settings.save() + await interaction.response.send_message(f"Event Weekly Limit set to {points}.", ephemeral=True) + + @settings.subcommand() + async def role_ids(self, interaction: nextcord.Interaction) -> None: + """Subcommand parent. Never called.""" + + @role_ids.subcommand(description="Sets Clan Council role id.") + async def clan_council( + self, + interaction: nextcord.Interaction, + role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."), + ) -> None: + """ + Sets DakinySettings role_ids.clan_council to the given role id. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + role (nextcord.TextChannel): Role to set in settings. + """ + role_id = role.id + settings.role_ids.clan_council = role_id + settings.save() + await interaction.response.send_message(f"Clan Council role set to <@&{role_id}>.", ephemeral=True) + + @role_ids.subcommand(description="Sets Clan Council Elect role id.") + async def clan_council_elect( + self, + interaction: nextcord.Interaction, + role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."), + ) -> None: + """ + Sets DakinySettings role_ids.clan_council_elect to the given role id. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + role (nextcord.TextChannel): Role to set in settings. + """ + role_id = role.id + settings.role_ids.clan_council_elect = role_id + settings.save() + await interaction.response.send_message(f"Clan Council Elect role set to <@&{role_id}>.", ephemeral=True) + + @role_ids.subcommand(description="Sets Clan Member role id.") + async def clan_member( + self, + interaction: nextcord.Interaction, + role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."), + ) -> None: + """ + Sets DakinySettings role_ids.clan_member to the given role id. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + role (nextcord.TextChannel): Role to set in settings. + """ + role_id = role.id + settings.role_ids.clan_member = role_id + settings.save() + await interaction.response.send_message(f"Clan Member role set to <@&{role_id}>.", ephemeral=True) + + @role_ids.subcommand(description="Sets Event Host role id.") + async def event_host( + self, + interaction: nextcord.Interaction, + role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."), + ) -> None: + """ + Sets DakinySettings role_ids.event_host to the given role id. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + role (nextcord.TextChannel): Role to set in settings. + """ + role_id = role.id + settings.role_ids.event_host = role_id + settings.save() + await interaction.response.send_message(f"Event Host role set to <@&{role_id}>.", ephemeral=True) + + @role_ids.subcommand(description="Sets High Council role id.") + async def high_council( + self, + interaction: nextcord.Interaction, + role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."), + ) -> None: + """ + Sets DakinySettings role_ids.high_council to the given role id. + + Args: + interaction (nextcord.Interaction): Discord interaction of command. + role (nextcord.TextChannel): Role to set in settings. + """ + role_id = role.id + settings.role_ids.high_council = role_id + settings.save() + await interaction.response.send_message(f"High Council role set to <@&{role_id}>.", ephemeral=True)