75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
"""
|
|
Contained commands and views for refresh commands.
|
|
"""
|
|
|
|
import os
|
|
|
|
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) -> 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):
|
|
"""
|
|
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,
|
|
),
|
|
):
|
|
"""
|
|
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 os.path.isdir(f"{MESSAGES_DIR}/{dir_name}")
|
|
]
|
|
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):
|
|
"""
|
|
Calls edit_clan_council_info().
|
|
|
|
Args:
|
|
interaction (nextcord.Interaction): Interaction with the command.
|
|
"""
|
|
await edit_clan_council_info(interaction.guild, self.bot.config)
|
|
await interaction.response.send_message(
|
|
"Clan Council Info message updated.", ephemeral=True
|
|
)
|