Fix lint smells and update model usage in refresh and set.

This commit is contained in:
2025-03-04 12:47:44 -05:00
parent 3fc8910c9a
commit 44d813504a
2 changed files with 34 additions and 43 deletions
+8 -8
View File
@@ -1,13 +1,13 @@
""" """Commands for refreshing highscore messages."""
Commands for refreshing highscore messages.
"""
import nextcord import nextcord
from nextcord.ext import commands from nextcord.ext import commands
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session 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 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: with Session(engine) as session:
stmt = ( stmt = (
select(CategoryGroup) select(CategoryGroup)
.where(CategoryGroup.GuildId == interaction.guild_id) .where(col(CategoryGroup.guild_id) == interaction.guild_id)
.where(CategoryGroup.GroupId == int(group_id)) .where(col(CategoryGroup.id) == int(group_id))
) )
group = session.scalar(stmt) group = session.scalar(stmt)
await send_highscore_message(session, interaction.guild, group) 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() @refresh.subcommand()
async def all(self, interaction: nextcord.Interaction) -> None: 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. interaction (nextcord.Interaction): Interaction that invoked the command.
""" """
with Session(engine) as session: 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 # awaiting response because posting scores takes a while
await interaction.response.defer(ephemeral=True) await interaction.response.defer(ephemeral=True)
+26 -35
View File
@@ -1,31 +1,25 @@
""" """Set command hierarchy."""
Set command heirarchy.
"""
import nextcord import nextcord
from nextcord.ext import commands from nextcord.ext import commands
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session 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 from utilities.utils import MAX_LINE_LENGTH, autofill_groups
class SetCog(commands.Cog, name="Set command."): 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: 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)) @nextcord.slash_command(default_member_permissions=nextcord.Permissions(administrator=True))
async def set(self, interaction: nextcord.Interaction): async def set(self, interaction: nextcord.Interaction) -> None:
""" """Parent slash command for setting settings. Never called."""
Parent slash command for setting settings. Never called.
"""
@set.subcommand(description="Registers the channel for a Category Group's messages.") @set.subcommand(description="Registers the channel for a Category Group's messages.")
async def group_output_channel( async def group_output_channel(
@@ -50,14 +44,13 @@ class SetCog(commands.Cog, name="Set command."):
channel (nextcord.abc.GuildChannel, optional): Channel to register channel (nextcord.abc.GuildChannel, optional): Channel to register
Is a SlashOption. Limited to text channels, Defaults to None. Is a SlashOption. Limited to text channels, Defaults to None.
""" """
if not channel: channel_id = interaction.channel.id if not channel else channel.id
channel = interaction.channel
channel_id = channel.id
with Session(engine) as session: with Session(engine) as session:
stmt = ( stmt = (
select(CategoryGroup) select(CategoryGroup)
.where(CategoryGroup.GuildId == interaction.guild_id) .where(col(CategoryGroup.guild_id) == interaction.guild_id)
.where(CategoryGroup.GroupId == int(group_id)) .where(col(CategoryGroup.id) == int(group_id))
) )
group = session.scalar(stmt) group = session.scalar(stmt)
group.ChannelId = channel_id group.ChannelId = channel_id
@@ -92,14 +85,14 @@ class SetCog(commands.Cog, name="Set command."):
with Session(engine) as session: with Session(engine) as session:
stmt = ( stmt = (
select(CategoryGroup) select(CategoryGroup)
.where(CategoryGroup.GuildId == interaction.guild_id) .where(col(CategoryGroup.guild_id) == interaction.guild_id)
.where(CategoryGroup.GroupId == int(group_id)) .where(col(CategoryGroup.id) == int(group_id))
) )
group = session.scalar(stmt) group = session.scalar(stmt)
group.PadLength = length group.PadLength = length
session.commit() session.commit()
await interaction.response.send_message( 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( @set.subcommand(
@@ -120,17 +113,15 @@ class SetCog(commands.Cog, name="Set command."):
Args: Args:
interaction (nextcord.Interaction): Interaction that invoked the command 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. Is a SlashOption. Limited to text channels, Defaults to None.
""" """
if not channel: channel_id = interaction.channel.id if not channel else channel.id
channel = interaction.channel
with Session(engine) as session: with Session(engine) as session:
channel_id = channel.id stmt = select(Guild).where(col(Guild.id) == interaction.guild_id)
stmt = select(Guild).where(Guild.GuildId == interaction.guild_id)
guild = session.scalar(stmt) guild = session.scalar(stmt)
guild.SubmissionChannel = channel_id guild.submission_channel = channel_id
session.commit() session.commit()
await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True) await interaction.send(f"Registered <#{channel_id}>.", ephemeral=True)
@@ -150,13 +141,14 @@ class SetCog(commands.Cog, name="Set command."):
Args: Args:
interaction (nextcord.Interaction): Interaction that invoked the command 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. length (int): Number of characters. Is SlashOption. Defaults to 12.
""" """
with Session(engine) as session: with Session(engine) as session:
stmt = ( stmt = (
select(CategoryGroup) select(CategoryGroup)
.where(CategoryGroup.GuildId == interaction.guild_id) .where(col(CategoryGroup.guild_id) == interaction.guild_id)
.where(CategoryGroup.GroupId == int(group_id)) .where(col(CategoryGroup.id) == int(group_id))
) )
group = session.scalar(stmt) group = session.scalar(stmt)
group.UsernameLength = length group.UsernameLength = length
@@ -182,11 +174,10 @@ class SetCog(commands.Cog, name="Set command."):
channel (Optional[nextcord.abc.GuildChannel]): Channel to register channel (Optional[nextcord.abc.GuildChannel]): Channel to register
Is a SlashOption. Limited to text channels, Defaults to None. Is a SlashOption. Limited to text channels, Defaults to None.
""" """
if not channel: channel_id = interaction.channel.id if not channel else channel.id
channel = interaction.channel
channel_id = channel.id
with Session(engine) as session: 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 = session.scalar(stmt)
guild.VerificationChannel = channel_id guild.VerificationChannel = channel_id
session.commit() session.commit()
@@ -195,7 +186,7 @@ class SetCog(commands.Cog, name="Set command."):
@group_output_channel.on_autocomplete("group_id") @group_output_channel.on_autocomplete("group_id")
@pad_length.on_autocomplete("group_id") @pad_length.on_autocomplete("group_id")
@username_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. Sends results from autofill_groups back to group_output_channel for autocompletion of group_id.