"""View for verification buttons""" import nextcord from classes.score import Score, ScoreTime # pylint: disable=import-error from highscores import highscores_data # pylint: disable=import-error from utilities.utils import submit_score # pylint: disable=import-error class VerificationView(nextcord.ui.View): """Defines views for verifying score submissions""" 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" ) async def approve_button( self, button: nextcord.ui.Button, interaction: nextcord.Interaction ): # pylint: disable=unused-argument """Button for approving score submission.""" content = interaction.message.embeds[0].to_dict() for field in content["fields"]: if field["name"] == "Table": table = field["value"] elif field["name"] == "Category": category = field["value"] elif field["name"] == "Score": score = field["value"] elif field["name"] == "User Name": user = field["value"] try: submission_guild = highscores_data.get_guild(interaction.guild_id) submission_table = submission_guild.get_table(table) submission_category = submission_table.get_category(category) if submission_category.time_record: submission_score: ScoreTime = ScoreTime(user) submission_score.set_value_str(score) else: submission_score: Score = Score(user) submission_score.set_value_str(score) await submit_score( interaction, submission_guild, submission_table, submission_category, submission_score, ) content = interaction.message.content content += f"\nApproved by <@{interaction.user.id}>." await interaction.message.edit(content=content, view=None) except UnboundLocalError: await interaction.send("Instruct user to submit with all fields.") await interaction.message.edit(view=None)