Convert bot to use a submissions table.
This commit is contained in:
+39
-11
@@ -321,6 +321,44 @@ def get_time_str(time_in: float) -> str:
|
||||
return time.strftime(f"%-M:%S.{milliseconds}", time.gmtime(time_in))
|
||||
|
||||
|
||||
def score_float_to_str(score: float, is_time_record: bool) -> str:
|
||||
"""
|
||||
Converts a float representation of a score into a string. Easier to transport the score as one data type.
|
||||
Calls get_time_str if the score is a time record, otherwise just converts the string.
|
||||
|
||||
Args:
|
||||
score (float): float representation of the score.
|
||||
is_time_record (bool): true if the score is a time record.
|
||||
|
||||
Returns:
|
||||
str: string representation of the score.
|
||||
"""
|
||||
if is_time_record:
|
||||
return get_time_str(score)
|
||||
else:
|
||||
return str(score)
|
||||
|
||||
|
||||
def score_str_to_float(score: str, is_time_record: bool) -> float:
|
||||
"""
|
||||
Converts a string representation of score into a float. Easier to transport the score as one data type.
|
||||
Operates differently depending on if the score is a time record or an int.
|
||||
|
||||
Args:
|
||||
score (str): string representation of the score.
|
||||
is_time_record (bool): true if the score is a time record.
|
||||
|
||||
Returns:
|
||||
float: float representation of the score.
|
||||
"""
|
||||
if is_time_record:
|
||||
minutes = float(score.split(":", maxsplit=1)[0])
|
||||
seconds = float(score.split(":", maxsplit=1)[1])
|
||||
return (minutes * 60) + seconds
|
||||
else:
|
||||
return float(score)
|
||||
|
||||
|
||||
async def send_highscore_message(session: Session, guild: nextcord.Guild, group: CategoryGroup) -> nextcord.Message:
|
||||
"""
|
||||
Function takes care of checking if a message exists for a group.
|
||||
@@ -351,7 +389,7 @@ async def send_highscore_message(session: Session, guild: nextcord.Guild, group:
|
||||
|
||||
|
||||
async def submit_score(
|
||||
interaction: nextcord.Interaction, group_id: int, category_id: int, username: str, score: str
|
||||
interaction: nextcord.Interaction, group_id: int, category_id: int, username: str, score: float
|
||||
) -> None:
|
||||
"""
|
||||
Adds passed score to group. Then updates group message by calling send_highscore_message.
|
||||
@@ -366,16 +404,6 @@ async def submit_score(
|
||||
"""
|
||||
|
||||
with Session(engine) as session:
|
||||
stmt = select(Category.IsTimeRecord).where(Category.CategoryId == category_id)
|
||||
is_time_record = session.scalar(stmt)
|
||||
|
||||
if is_time_record:
|
||||
minutes = float(score.split(":", maxsplit=1)[0])
|
||||
seconds = float(score.split(":", maxsplit=1)[1])
|
||||
score = (minutes * 60) + seconds
|
||||
else:
|
||||
score = float(score)
|
||||
|
||||
stmt = select(Score).where(Score.UserName == username).where(Score.CategoryId == category_id)
|
||||
existing_score = session.scalar(stmt)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user