diff --git a/cogs/message_listener/__init__.py b/cogs/message_listener/__init__.py index 6c08ee3..6efa1e1 100644 --- a/cogs/message_listener/__init__.py +++ b/cogs/message_listener/__init__.py @@ -65,7 +65,9 @@ class SubmissionListener(commands.Cog, name="Message Listener"): files=[await attch.to_file() for attch in message.attachments], ) elif state == SubmissionState.NAME and message.content: - submission_objects[message.author.id]["username"] = message.content[:12] + submission_objects[message.author.id]["username"] = message.content[ + : highscores_data["username_length"] + ] embed = get_submission_embed(message.author.id) await submission_message.edit( embed=embed, diff --git a/cogs/submission/submission_views.py b/cogs/submission/submission_views.py index 301a2e9..6918a08 100644 --- a/cogs/submission/submission_views.py +++ b/cogs/submission/submission_views.py @@ -201,7 +201,9 @@ class SubmissionCreateButton(nextcord.ui.View): "boss_name": boss_name, "score": "", "category": "", - "username": interaction.user.display_name.split("|")[0][:12], + "username": interaction.user.display_name.split("|")[0][ + : highscores_data["username_length"] + ], } embed = get_submission_embed(interaction.user.id) diff --git a/cogs/submission/verification_view.py b/cogs/submission/verification_view.py index 89599ea..eb14e23 100644 --- a/cogs/submission/verification_view.py +++ b/cogs/submission/verification_view.py @@ -10,6 +10,15 @@ class VerificationView(nextcord.ui.View): def __init__(self): super().__init__(timeout=None) + @nextcord.ui.button( + label="Deny", style=nextcord.ButtonStyle.red, custom_id="deny-button-submission" + ) + async def deny_button( + self, button: nextcord.ui.Button, interaction: nextcord.Interaction + ): # pylint: disable=unused-argument + """Button for denying score submission.""" + await interaction.message.delete() + @nextcord.ui.button( label="Approve", style=nextcord.ButtonStyle.green, custom_id="approve-button-submission" ) @@ -35,12 +44,3 @@ class VerificationView(nextcord.ui.View): except UnboundLocalError: await interaction.send("Instruct user to submit with all fields.") await interaction.message.edit(view=None) - - @nextcord.ui.button( - label="Deny", style=nextcord.ButtonStyle.red, custom_id="deny-button-submission" - ) - async def deny_button( - self, button: nextcord.ui.Button, interaction: nextcord.Interaction - ): # pylint: disable=unused-argument - """Button for denying score submission.""" - await interaction.message.delete() diff --git a/utilities/data_storage.py b/utilities/data_storage.py index 7f06c94..d29ea49 100644 --- a/utilities/data_storage.py +++ b/utilities/data_storage.py @@ -28,7 +28,7 @@ def open_highscores_data(): data = json.load(file) else: # create the json object - data = {"highscore_channel_id": -1, "verification_channel_id": -1} + data = {"highscore_channel_id": -1, "verification_channel_id": -1, "username_length": 12} config: dict = open_highscores_config() for boss, categories in config["highscore_table"].items(): data[boss] = {"message_id": 0} diff --git a/utilities/utils.py b/utilities/utils.py index df5de74..6ca917c 100644 --- a/utilities/utils.py +++ b/utilities/utils.py @@ -21,7 +21,7 @@ def format_highscore_message(boss_name: str): # Gather all categories and add to string for key, value in boss_data["categories"].items(): - ret_string += f"{key}".ljust(25, " ") + ret_string += f"{key}".ljust(26, " ") ret_string += "\n" highscore_size = highscores_config["highscore_size"] @@ -30,10 +30,25 @@ def format_highscore_message(boss_name: str): for i in range(highscore_size): for key, value in boss_data["categories"].items(): if len(value) > i: - score = value[i] - ret_string += f"{i+1}: {score[0]} - {score[1]}".ljust(25, " ") + score_pair = value[i] + + # pad username to max length. + username: str = score_pair[0].ljust(highscores_data["username_length"], " ") + score: str = str(score_pair[1]) + + # standardize time score format. + if highscores_config["categories"][key]["is_time_record"]: + if score.find(":") == -1: + score = "00:" + score + elif len(score.split(":", maxsplit=1)[0]) < 2: + score = "0" + score + if score.find(".") == -1: + # insert 2 spaces to make up for period and ms + score = score + " " + line_str = f"{i+1}: {username} - " + ret_string += line_str + score.rjust(26 - len(line_str) - 1) + " " else: - ret_string += f"{i+1}: submit your score".ljust(25, " ") + ret_string += f"{i+1}: submit your score".ljust(26, " ") ret_string += "\n" return ret_string + "```" @@ -77,9 +92,9 @@ async def submit_score( boss_category_config = highscores_config["categories"][category] - # capping to 12 characters because runescape names are 12 characters long. # Splitting on pipe. My discord has multiple names on account split by pipe. - user = user.split("|")[0][:12] + # cap length to data defined length. + user = user.split("|")[0][: highscores_data["username_length"]] # strip leading zeros and colon from score score = score.lstrip("0:")