"""Commands for testing.""" import nextcord from nextcord.ext import application_checks, commands from dakiny_bot.classes.election import Election from dakiny_bot.DakinySettings import settings from dakiny_bot.utils import GUILDS, get_active_election_cycle, get_quarter_name ME = 206602713511886849 def is_me(): # noqa: ANN201 """Predicate that makes sure only I can run the test commands.""" def predicate(interaction: nextcord.Interaction) -> bool: return interaction.user.id == ME return application_checks.check(predicate) class TestCog(commands.Cog, name="Test commands."): """Class holds commands for testing.""" def __init__(self, bot: commands.Bot) -> None: """Default constructor for HelpCog class. Does nothing.""" self.bot: commands.Bot = bot @nextcord.slash_command(guild_ids=GUILDS) async def test(self, interaction: nextcord.Interaction) -> None: """Parent slash command for help. Never called.""" @test.subcommand() @is_me() async def election_start(self, interaction: nextcord.Interaction) -> None: """ Force starts election. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.election_start_action() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def voting_start(self, interaction: nextcord.Interaction) -> None: """ Force starts voting. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.voting_start_action() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def voting_end(self, interaction: nextcord.Interaction) -> None: """ Force ends voting. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.voting_end_action() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def highcouncil_vote(self, interaction: nextcord.Interaction) -> None: """ Force starts highcouncil voting. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.highcouncil_election_start_action() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def election_reminder(self, interaction: nextcord.Interaction) -> None: """ Forces election reminder. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.election_reminder() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def daily(self, interaction: nextcord.Interaction) -> None: """ Forces daily function. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.check_date() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def term_start(self, interaction: nextcord.Interaction) -> None: """ Forces term start. Args: interaction (nextcord.Interaction): Interaction with the message. """ cycle = Election( get_active_election_cycle(), self.bot.get_guild(settings.params.guild_id), ) await cycle.term_start_action() await interaction.send("Test command sent.", ephemeral=True) @test.subcommand() @is_me() async def get_quarter_name(self, interaction: nextcord.Interaction) -> None: """ Tests getting the quarter name. Args: interaction (nextcord.Interaction): Interaction with the message. """ name = get_quarter_name() await interaction.send(name)