From 44d813504ae23d43a4b85d26c1204f68a00f69c3 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Tue, 4 Mar 2025 12:47:44 -0500 Subject: [PATCH] Fix lint smells and update model usage in refresh and set. --- cogs/commands/refresh.py | 16 +++++------ cogs/commands/set.py | 61 +++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 43 deletions(-) diff --git a/cogs/commands/refresh.py b/cogs/commands/refresh.py index dd057e9..20e1064 100644 --- a/cogs/commands/refresh.py +++ b/cogs/commands/refresh.py @@ -1,13 +1,13 @@ -""" -Commands for refreshing highscore messages. -""" +"""Commands for refreshing highscore messages.""" import nextcord from nextcord.ext import commands from sqlalchemy import select from sqlalchemy.orm import Session +from sqlmodel import col -from database.db import CategoryGroup, engine +from database.db import engine +from database.models import CategoryGroup from utilities.utils import autofill_groups, send_highscore_message @@ -43,13 +43,13 @@ class RefreshCog(commands.Cog, name="Refresh Cog"): with Session(engine) as session: stmt = ( select(CategoryGroup) - .where(CategoryGroup.GuildId == interaction.guild_id) - .where(CategoryGroup.GroupId == int(group_id)) + .where(col(CategoryGroup.guild_id) == interaction.guild_id) + .where(col(CategoryGroup.id) == int(group_id)) ) group = session.scalar(stmt) await send_highscore_message(session, interaction.guild, group) - await interaction.response.send_message(f"Updated group {group.GroupName}!", ephemeral=True) + await interaction.response.send_message(f"Updated group {group.name}!", ephemeral=True) @refresh.subcommand() async def all(self, interaction: nextcord.Interaction) -> None: @@ -67,7 +67,7 @@ class RefreshCog(commands.Cog, name="Refresh Cog"): interaction (nextcord.Interaction): Interaction that invoked the command. """ with Session(engine) as session: - stmt = select(CategoryGroup).where(CategoryGroup.GuildId == interaction.guild_id) + stmt = select(CategoryGroup).where(col(CategoryGroup.guild_id) == interaction.guild_id) # awaiting response because posting scores takes a while await interaction.response.defer(ephemeral=True) diff --git a/cogs/commands/set.py b/cogs/commands/set.py index aea4b36..d2bd194 100644 --- a/cogs/commands/set.py +++ b/cogs/commands/set.py @@ -1,31 +1,25 @@ -""" -Set command heirarchy. -""" +"""Set command hierarchy.""" import nextcord from nextcord.ext import commands from sqlalchemy import select from sqlalchemy.orm import Session +from sqlmodel import col -from database.db import CategoryGroup, Guild, engine +from database.db import engine +from database.models import CategoryGroup, Guild from utilities.utils import MAX_LINE_LENGTH, autofill_groups class SetCog(commands.Cog, name="Set command."): - """ - Class holds commands for setting variables in guild's database. - """ + """Class holds commands for setting variables in guild's database.""" def __init__(self) -> None: - """ - Default constructor for SetCog class. Does nothing. - """ + """Default constructor for SetCog class. Does nothing.""" @nextcord.slash_command(default_member_permissions=nextcord.Permissions(administrator=True)) - async def set(self, interaction: nextcord.Interaction): - """ - Parent slash command for setting settings. Never called. - """ + async def set(self, interaction: nextcord.Interaction) -> None: + """Parent slash command for setting settings. Never called.""" @set.subcommand(description="Registers the channel for a Category Group's messages.") async def group_output_channel( @@ -50,14 +44,13 @@ class SetCog(commands.Cog, name="Set command."): 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 + channel_id = interaction.channel.id if not channel else channel.id + with Session(engine) as session: stmt = ( select(CategoryGroup) - .where(CategoryGroup.GuildId == interaction.guild_id) - .where(CategoryGroup.GroupId == int(group_id)) + .where(col(CategoryGroup.guild_id) == interaction.guild_id) + .where(col(CategoryGroup.id) == int(group_id)) ) group = session.scalar(stmt) group.ChannelId = channel_id @@ -92,14 +85,14 @@ class SetCog(commands.Cog, name="Set command."): with Session(engine) as session: stmt = ( select(CategoryGroup) - .where(CategoryGroup.GuildId == interaction.guild_id) - .where(CategoryGroup.GroupId == int(group_id)) + .where(col(CategoryGroup.guild_id) == interaction.guild_id) + .where(col(CategoryGroup.id) == int(group_id)) ) group = session.scalar(stmt) group.PadLength = length session.commit() await interaction.response.send_message( - f"Category pad length set to {length} for {group.GroupName}", ephemeral=True + f"Category pad length set to {length} for {group.name}", ephemeral=True ) @set.subcommand( @@ -120,17 +113,15 @@ class SetCog(commands.Cog, name="Set command."): Args: interaction (nextcord.Interaction): Interaction that invoked the command - channel Optional[nextcord.abc.GuildChannel], optional): Channel to register + channel (nextcord.abc.GuildChannel): Channel to register Is a SlashOption. Limited to text channels, Defaults to None. """ - if not channel: - channel = interaction.channel + channel_id = interaction.channel.id if not channel else channel.id with Session(engine) as session: - channel_id = channel.id - stmt = select(Guild).where(Guild.GuildId == interaction.guild_id) + stmt = select(Guild).where(col(Guild.id) == interaction.guild_id) guild = session.scalar(stmt) - guild.SubmissionChannel = channel_id + guild.submission_channel = channel_id session.commit() await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True) @@ -150,13 +141,14 @@ class SetCog(commands.Cog, name="Set command."): Args: interaction (nextcord.Interaction): Interaction that invoked the command + group_id (str): String representation of Group id to set username length in. Is SlashOption. length (int): Number of characters. Is SlashOption. Defaults to 12. """ with Session(engine) as session: stmt = ( select(CategoryGroup) - .where(CategoryGroup.GuildId == interaction.guild_id) - .where(CategoryGroup.GroupId == int(group_id)) + .where(col(CategoryGroup.guild_id) == interaction.guild_id) + .where(col(CategoryGroup.id) == int(group_id)) ) group = session.scalar(stmt) group.UsernameLength = length @@ -182,11 +174,10 @@ class SetCog(commands.Cog, name="Set 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 + channel_id = interaction.channel.id if not channel else channel.id + with Session(engine) as session: - stmt = select(Guild).where(Guild.GuildId == interaction.guild_id) + stmt = select(Guild).where(col(Guild.id) == interaction.guild_id) guild = session.scalar(stmt) guild.VerificationChannel = channel_id session.commit() @@ -195,7 +186,7 @@ class SetCog(commands.Cog, name="Set command."): @group_output_channel.on_autocomplete("group_id") @pad_length.on_autocomplete("group_id") @username_length.on_autocomplete("group_id") - async def group_autocomplete(self, interaction: nextcord.Interaction, group_id: str): + async def group_autocomplete(self, interaction: nextcord.Interaction, group_id: str) -> None: """ Sends results from autofill_groups back to group_output_channel for autocompletion of group_id.