Move all files into dakiny_bot package.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""Contained commands and views for refresh commands."""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import nextcord
|
||||
from nextcord.ext import commands
|
||||
|
||||
from utils import MESSAGES_DIR, edit_clan_council_info, update_clan_messages
|
||||
|
||||
|
||||
class RefreshCog(commands.Cog, name="Refresh Commands"):
|
||||
"""Class holds refresh commands."""
|
||||
|
||||
def __init__(self, bot: commands.Bot) -> None:
|
||||
"""Default constructor for RefreshCog class. Does nothing."""
|
||||
super().__init__()
|
||||
self.bot: commands.Bot = bot
|
||||
|
||||
@nextcord.slash_command(default_member_permissions=nextcord.Permissions(administrator=True))
|
||||
async def refresh(self, interaction: nextcord.Interaction) -> None:
|
||||
"""Parent slash command for refresh. Never called."""
|
||||
|
||||
@refresh.subcommand(description="Force refresh all of the bot managed messages.")
|
||||
async def messages(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
description="Channel to refresh messages in.",
|
||||
required=False,
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Updates all messages.
|
||||
|
||||
Calls update_clan_messages() to update all messages.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the command.
|
||||
channel (nextcord.TextChannel): channel to refresh messages in.
|
||||
"""
|
||||
await interaction.response.defer(ephemeral=True)
|
||||
|
||||
if channel is None:
|
||||
channel_updates = [
|
||||
dir_name for dir_name in os.listdir(MESSAGES_DIR) if Path(f"{MESSAGES_DIR}/{dir_name}").is_dir()
|
||||
]
|
||||
else:
|
||||
channel_updates = [channel.name]
|
||||
|
||||
await update_clan_messages(interaction.guild, channel_updates)
|
||||
await interaction.followup.send("Messages have been refreshed.", ephemeral=True)
|
||||
|
||||
@refresh.subcommand(description="Updates the current council info message.")
|
||||
async def council_info(self, interaction: nextcord.Interaction) -> None:
|
||||
"""
|
||||
Edits the clan council info message.
|
||||
|
||||
Calls edit_clan_council_info().
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the command.
|
||||
"""
|
||||
await edit_clan_council_info(interaction.guild)
|
||||
await interaction.response.send_message("Clan Council Info message updated.", ephemeral=True)
|
||||
Reference in New Issue
Block a user