164 lines
5.0 KiB
Python
164 lines
5.0 KiB
Python
"""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 get_current_election_cycle
|
|
|
|
if TYPE_CHECKING:
|
|
from config import DakinyConfig
|
|
|
|
|
|
ME = 206602713511886849
|
|
GUILDS = [1000247361639030804]
|
|
|
|
|
|
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)
|