Files
dakiny-bot/cogs/commands/test.py
T

144 lines
4.4 KiB
Python

"""Commands for testing."""
import nextcord
from nextcord.ext import application_checks, commands
from classes.election import Election
from DakinySettings import settings
from utils import GUILDS, get_current_election_cycle
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_current_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_current_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_current_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_current_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_current_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_current_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_current_election_cycle(),
self.bot.get_guild(settings.params.guild_id),
)
await cycle.term_start_action()
await interaction.send("Test command sent.", ephemeral=True)