Create set command over Settings Management.
This commit is contained in:
@@ -7,7 +7,7 @@ from nextcord.ext import commands
|
|||||||
# Command classes
|
# Command classes
|
||||||
from .data_management import DataManagementCog
|
from .data_management import DataManagementCog
|
||||||
from .message_management import MessageManagementCog
|
from .message_management import MessageManagementCog
|
||||||
from .settings_management import SettingsManagementCog
|
from .set import SetCog
|
||||||
|
|
||||||
|
|
||||||
# This function will be called when this extension is loaded.
|
# This function will be called when this extension is loaded.
|
||||||
@@ -18,4 +18,4 @@ def setup(bot: commands.Bot):
|
|||||||
"""
|
"""
|
||||||
bot.add_cog(DataManagementCog(bot))
|
bot.add_cog(DataManagementCog(bot))
|
||||||
bot.add_cog(MessageManagementCog(bot))
|
bot.add_cog(MessageManagementCog(bot))
|
||||||
bot.add_cog(SettingsManagementCog())
|
bot.add_cog(SetCog())
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
Commands for managing the Guild's settings.
|
Set command heirarchy.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
@@ -13,114 +13,16 @@ from utilities.sql_alchemy_connection import CategoryGroup, Guild, session
|
|||||||
from utilities.utils import autofill_groups
|
from utilities.utils import autofill_groups
|
||||||
|
|
||||||
|
|
||||||
class SettingsManagementCog(commands.Cog, name="Settings Management"):
|
class SetCog(commands.Cog, name="Set command."):
|
||||||
"""
|
"""
|
||||||
Class holds commands for managing Guild's settings.
|
Class holds commands for setting variables in guild's database.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""
|
"""
|
||||||
Default constructor for SettingsManagement class. Does nothing.
|
Default constructor for SetCog class. Does nothing.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@nextcord.slash_command(default_member_permissions=nextcord.Permissions(administrator=True))
|
|
||||||
async def register(self, interaction: nextcord.Interaction):
|
|
||||||
"""
|
|
||||||
Parent slash command, never called.
|
|
||||||
"""
|
|
||||||
|
|
||||||
@register.subcommand(description="Registers the channel for a Category Group's messages.")
|
|
||||||
async def group_output_channel(
|
|
||||||
self,
|
|
||||||
interaction: nextcord.Interaction,
|
|
||||||
group_id: str = nextcord.SlashOption(
|
|
||||||
name="group", description="Category Group to assign to channel.", required=True
|
|
||||||
),
|
|
||||||
channel: Optional[nextcord.abc.GuildChannel] = nextcord.SlashOption(
|
|
||||||
description="Channel to register",
|
|
||||||
required=False,
|
|
||||||
channel_types=[nextcord.ChannelType.text],
|
|
||||||
default=None,
|
|
||||||
),
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Command function to register a CategoryGroup's output channel.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
interaction (nextcord.Interaction): Interaction that invoked the command
|
|
||||||
group_id (str): String representation of Group id to register channel to. Is SlashOption.
|
|
||||||
channel (nextcord.abc.GuildChannel, optional): Channel to register
|
|
||||||
Is a SlashOption. Limited to text channels, Defaults to None.
|
|
||||||
"""
|
|
||||||
if not channel:
|
|
||||||
channel = interaction.channel
|
|
||||||
channel_id = channel.id
|
|
||||||
stmt = (
|
|
||||||
select(CategoryGroup)
|
|
||||||
.where(CategoryGroup.GuildId == interaction.guild_id)
|
|
||||||
.where(CategoryGroup.GroupId == int(group_id))
|
|
||||||
)
|
|
||||||
group = session.scalar(stmt)
|
|
||||||
group.ChannelId = channel_id
|
|
||||||
session.commit()
|
|
||||||
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
|
|
||||||
|
|
||||||
@register.subcommand(description="Registers the channel for submission messages.")
|
|
||||||
async def submission(
|
|
||||||
self,
|
|
||||||
interaction: nextcord.Interaction,
|
|
||||||
channel: Optional[nextcord.abc.GuildChannel] = nextcord.SlashOption(
|
|
||||||
description="Channel to register",
|
|
||||||
required=False,
|
|
||||||
channel_types=[nextcord.ChannelType.text],
|
|
||||||
default=None,
|
|
||||||
),
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Command function to register the submission message channel.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
interaction (nextcord.Interaction): Interaction that invoked the command
|
|
||||||
channel Optional[nextcord.abc.GuildChannel], optional): Channel to register
|
|
||||||
Is a SlashOption. Limited to text channels, Defaults to None.
|
|
||||||
"""
|
|
||||||
if not channel:
|
|
||||||
channel = interaction.channel
|
|
||||||
channel_id = channel.id
|
|
||||||
stmt = select(Guild).where(Guild.GuildId == interaction.guild_id)
|
|
||||||
guild = session.scalar(stmt)
|
|
||||||
guild.SubmissionChannel = channel_id
|
|
||||||
session.commit()
|
|
||||||
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
|
|
||||||
|
|
||||||
@register.subcommand(description="Registers the channel for verification messages.")
|
|
||||||
async def verify(
|
|
||||||
self,
|
|
||||||
interaction: nextcord.Interaction,
|
|
||||||
channel: Optional[nextcord.abc.GuildChannel] = nextcord.SlashOption(
|
|
||||||
description="Channel to register",
|
|
||||||
required=False,
|
|
||||||
channel_types=[nextcord.ChannelType.text],
|
|
||||||
default=None,
|
|
||||||
),
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Command function to register the verification message channel.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
interaction (nextcord.Interaction): Interaction that invoked the command
|
|
||||||
channel (Optional[nextcord.abc.GuildChannel]): Channel to register
|
|
||||||
Is a SlashOption. Limited to text channels, Defaults to None.
|
|
||||||
"""
|
|
||||||
if not channel:
|
|
||||||
channel = interaction.channel
|
|
||||||
channel_id = channel.id
|
|
||||||
stmt = select(Guild).where(Guild.GuildId == interaction.guild_id)
|
|
||||||
guild = session.scalar(stmt)
|
|
||||||
guild.VerificationChannel = channel_id
|
|
||||||
session.commit()
|
|
||||||
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
|
|
||||||
|
|
||||||
@nextcord.slash_command(default_member_permissions=nextcord.Permissions(administrator=True))
|
@nextcord.slash_command(default_member_permissions=nextcord.Permissions(administrator=True))
|
||||||
async def set(self, interaction: nextcord.Interaction):
|
async def set(self, interaction: nextcord.Interaction):
|
||||||
"""
|
"""
|
||||||
@@ -159,6 +61,70 @@ class SettingsManagementCog(commands.Cog, name="Settings Management"):
|
|||||||
f"Category pad length set to {length} for {group.GroupName}", ephemeral=True
|
f"Category pad length set to {length} for {group.GroupName}", ephemeral=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@set.subcommand(description="Registers the channel for a Category Group's messages.")
|
||||||
|
async def group_output_channel(
|
||||||
|
self,
|
||||||
|
interaction: nextcord.Interaction,
|
||||||
|
group_id: str = nextcord.SlashOption(
|
||||||
|
name="group", description="Category Group to assign to channel.", required=True
|
||||||
|
),
|
||||||
|
channel: Optional[nextcord.abc.GuildChannel] = nextcord.SlashOption(
|
||||||
|
description="Channel to register",
|
||||||
|
required=False,
|
||||||
|
channel_types=[nextcord.ChannelType.text],
|
||||||
|
default=None,
|
||||||
|
),
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Command function to register a CategoryGroup's output channel.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
interaction (nextcord.Interaction): Interaction that invoked the command
|
||||||
|
group_id (str): String representation of Group id to register channel to. Is SlashOption.
|
||||||
|
channel (nextcord.abc.GuildChannel, optional): Channel to register
|
||||||
|
Is a SlashOption. Limited to text channels, Defaults to None.
|
||||||
|
"""
|
||||||
|
if not channel:
|
||||||
|
channel = interaction.channel
|
||||||
|
channel_id = channel.id
|
||||||
|
stmt = (
|
||||||
|
select(CategoryGroup)
|
||||||
|
.where(CategoryGroup.GuildId == interaction.guild_id)
|
||||||
|
.where(CategoryGroup.GroupId == int(group_id))
|
||||||
|
)
|
||||||
|
group = session.scalar(stmt)
|
||||||
|
group.ChannelId = channel_id
|
||||||
|
session.commit()
|
||||||
|
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
|
||||||
|
|
||||||
|
@set.subcommand(description="Registers the channel for submission messages.")
|
||||||
|
async def submission_channel(
|
||||||
|
self,
|
||||||
|
interaction: nextcord.Interaction,
|
||||||
|
channel: Optional[nextcord.abc.GuildChannel] = nextcord.SlashOption(
|
||||||
|
description="Channel to register",
|
||||||
|
required=False,
|
||||||
|
channel_types=[nextcord.ChannelType.text],
|
||||||
|
default=None,
|
||||||
|
),
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Command function to register the submission message channel.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
interaction (nextcord.Interaction): Interaction that invoked the command
|
||||||
|
channel Optional[nextcord.abc.GuildChannel], optional): Channel to register
|
||||||
|
Is a SlashOption. Limited to text channels, Defaults to None.
|
||||||
|
"""
|
||||||
|
if not channel:
|
||||||
|
channel = interaction.channel
|
||||||
|
channel_id = channel.id
|
||||||
|
stmt = select(Guild).where(Guild.GuildId == interaction.guild_id)
|
||||||
|
guild = session.scalar(stmt)
|
||||||
|
guild.SubmissionChannel = channel_id
|
||||||
|
session.commit()
|
||||||
|
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
|
||||||
|
|
||||||
@set.subcommand(description="Set username length for a Group of Categories.")
|
@set.subcommand(description="Set username length for a Group of Categories.")
|
||||||
async def username_length(
|
async def username_length(
|
||||||
self,
|
self,
|
||||||
@@ -186,6 +152,34 @@ class SettingsManagementCog(commands.Cog, name="Settings Management"):
|
|||||||
session.commit()
|
session.commit()
|
||||||
await interaction.response.send_message(f"Username length set to {length}.", ephemeral=True)
|
await interaction.response.send_message(f"Username length set to {length}.", ephemeral=True)
|
||||||
|
|
||||||
|
@set.subcommand(description="Registers the channel for verification messages.")
|
||||||
|
async def verify_channel(
|
||||||
|
self,
|
||||||
|
interaction: nextcord.Interaction,
|
||||||
|
channel: Optional[nextcord.abc.GuildChannel] = nextcord.SlashOption(
|
||||||
|
description="Channel to register",
|
||||||
|
required=False,
|
||||||
|
channel_types=[nextcord.ChannelType.text],
|
||||||
|
default=None,
|
||||||
|
),
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Command function to register the verification message channel.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
interaction (nextcord.Interaction): Interaction that invoked the command
|
||||||
|
channel (Optional[nextcord.abc.GuildChannel]): Channel to register
|
||||||
|
Is a SlashOption. Limited to text channels, Defaults to None.
|
||||||
|
"""
|
||||||
|
if not channel:
|
||||||
|
channel = interaction.channel
|
||||||
|
channel_id = channel.id
|
||||||
|
stmt = select(Guild).where(Guild.GuildId == interaction.guild_id)
|
||||||
|
guild = session.scalar(stmt)
|
||||||
|
guild.VerificationChannel = channel_id
|
||||||
|
session.commit()
|
||||||
|
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
|
||||||
|
|
||||||
@group_output_channel.on_autocomplete("group_id")
|
@group_output_channel.on_autocomplete("group_id")
|
||||||
@category_pad_length.on_autocomplete("group_id")
|
@category_pad_length.on_autocomplete("group_id")
|
||||||
@username_length.on_autocomplete("group_id")
|
@username_length.on_autocomplete("group_id")
|
||||||
Reference in New Issue
Block a user