"""Commands for testing.""" from typing import TYPE_CHECKING import nextcord from nextcord.ext import application_checks, commands from classes.election_cycle import ElectionCycle from utils import GUILDS, get_current_election_cycle if TYPE_CHECKING: from config import DakinyConfig 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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.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. """ config: DakinyConfig = self.bot.config cycle = ElectionCycle( get_current_election_cycle(config), config, self.bot.get_guild(config.params.guild_id), ) await cycle.term_start_action() await interaction.send("Test command sent.", ephemeral=True)