Edit embeds to provide bot information for submission.

This commit is contained in:
alwayscompiling
2022-12-01 23:26:04 -05:00
parent 02145ba244
commit 44cb9025b0
4 changed files with 41 additions and 31 deletions
+10 -2
View File
@@ -175,7 +175,7 @@ class Submission:
""" """
self._username = username self._username = username
def get_embed(self) -> Embed: def get_embeds(self) -> "list[Embed]":
"""Creates an embed based off of the submission state and fields filled out.""" """Creates an embed based off of the submission state and fields filled out."""
state: SubmissionState = self.submission_state state: SubmissionState = self.submission_state
@@ -209,7 +209,15 @@ class Submission:
embed.add_field(name="Category", value=session.scalar(stmt), inline=False) embed.add_field(name="Category", value=session.scalar(stmt), inline=False)
if self.score: if self.score:
embed.add_field(name="Score", value=self.score, inline=False) embed.add_field(name="Score", value=self.score, inline=False)
return embed
embeds = [embed]
if state is SubmissionState.VERIFY:
embed = Embed(title="Bot Information", description="Please disregard.")
embed.add_field(name="GroupId", value=self.group_id)
embed.add_field(name="CategoryId", value=self.category_id)
embeds.append(embed)
return embeds
class SubmissionMap: class SubmissionMap:
+8 -8
View File
@@ -52,14 +52,14 @@ class SubmissionListener(commands.Cog, name="Message Listener"):
time_regex = re.search("^([0-9]{1,2}:[0-9]|[0-9])?[0-9](\\.[0-9])?$", message.content) time_regex = re.search("^([0-9]{1,2}:[0-9]|[0-9])?[0-9](\\.[0-9])?$", message.content)
int_regex = re.search("^[0-9]+$", message.content) int_regex = re.search("^[0-9]+$", message.content)
if time_regex is None and is_time_record: if time_regex is None and is_time_record:
embed = submission_message.embeds[0] embeds = submission_message.embeds[0]
embed.add_field( embeds.add_field(
name="Error", name="Error",
value="Time record must follow format MM:SS.ms, SS.ms, or SS.", value="Time record must follow format MM:SS.ms, SS.ms, or SS.",
) )
elif int_regex is None and not is_time_record: elif int_regex is None and not is_time_record:
embed = submission_message.embeds[0] embeds = submission_message.embeds[0]
embed.add_field(name="Error", value="Number record must only be number.") embeds.add_field(name="Error", value="Number record must only be number.")
else: else:
score = message.content score = message.content
if is_time_record: if is_time_record:
@@ -77,9 +77,9 @@ class SubmissionListener(commands.Cog, name="Message Listener"):
# if there is a minute 10ths place 0, remove # if there is a minute 10ths place 0, remove
score = score.lstrip("0") score = score.lstrip("0")
submission.score = score submission.score = score
embed = submission.get_embed() embeds = submission.get_embeds()
await submission_message.edit( await submission_message.edit(
embed=embed, embeds=embeds,
) )
elif state == SubmissionState.PROOF and len(message.attachments) > 0: elif state == SubmissionState.PROOF and len(message.attachments) > 0:
await submission_message.edit( await submission_message.edit(
@@ -87,9 +87,9 @@ class SubmissionListener(commands.Cog, name="Message Listener"):
) )
elif state == SubmissionState.NAME and message.content: elif state == SubmissionState.NAME and message.content:
submission.username = message.content submission.username = message.content
embed = submission.get_embed() embeds = submission.get_embeds()
await submission_message.edit( await submission_message.edit(
embed=embed, embeds=embeds,
) )
await message.delete() await message.delete()
+10 -10
View File
@@ -45,9 +45,9 @@ class SubmissionDropdown(nextcord.ui.Select):
async def callback(self, interaction: nextcord.Interaction): async def callback(self, interaction: nextcord.Interaction):
submission = submission_objects.get_user_submission(interaction.user.id) submission = submission_objects.get_user_submission(interaction.user.id)
submission.category_id = self.values[0] submission.category_id = self.values[0]
embed = submission.get_embed() embeds = submission.get_embeds()
await interaction.message.edit( await interaction.message.edit(
embed=embed, embeds=embeds,
) )
@@ -63,8 +63,8 @@ class BackButton(nextcord.ui.Button):
state: SubmissionState = submission.submission_state state: SubmissionState = submission.submission_state
state = SubmissionState(state.value - 1) state = SubmissionState(state.value - 1)
submission.submission_state = state submission.submission_state = state
embed = submission.get_embed() embeds = submission.get_embeds()
await interaction.edit(embed=embed, view=SubmissionView(self._bot, interaction.user.id)) await interaction.edit(embeds=embeds, view=SubmissionView(self._bot, interaction.user.id))
class CancelButton(nextcord.ui.Button): class CancelButton(nextcord.ui.Button):
@@ -98,8 +98,8 @@ class NextButton(nextcord.ui.Button):
else: else:
state = SubmissionState(state.value + 1) state = SubmissionState(state.value + 1)
submission.submission_state = state submission.submission_state = state
embed = submission.get_embed() embeds = submission.get_embeds()
await interaction.edit(embed=embed, view=SubmissionView(self._bot, interaction.user.id)) await interaction.edit(embeds=embeds, view=SubmissionView(self._bot, interaction.user.id))
class SubmitButton(nextcord.ui.Button): class SubmitButton(nextcord.ui.Button):
@@ -121,12 +121,12 @@ class SubmitButton(nextcord.ui.Button):
submission.submission_state = SubmissionState.VERIFY submission.submission_state = SubmissionState.VERIFY
embed = submission.get_embed() embeds = submission.get_embeds()
await channel.send( await channel.send(
files=[await attch.to_file() for attch in interaction.message.attachments], files=[await attch.to_file() for attch in interaction.message.attachments],
view=VerificationView(), view=VerificationView(),
embed=embed, embeds=embeds,
content=f"Submission from <@{interaction.user.id}>.", content=f"Submission from <@{interaction.user.id}>.",
) )
await interaction.message.edit(content=f"<@{interaction.user.id}> Submitted!", view=None) await interaction.message.edit(content=f"<@{interaction.user.id}> Submitted!", view=None)
@@ -170,7 +170,7 @@ class SubmissionCreateButton(nextcord.ui.View):
submission_objects.add_submission(interaction.user.id, submission) submission_objects.add_submission(interaction.user.id, submission)
embed = submission.get_embed() embeds = submission.get_embeds()
submission_message = await channel.send( submission_message = await channel.send(
f"<@{interaction.user.id}>", f"<@{interaction.user.id}>",
@@ -178,7 +178,7 @@ class SubmissionCreateButton(nextcord.ui.View):
self._bot, self._bot,
interaction.user.id, interaction.user.id,
), ),
embed=embed, embeds=embeds,
) )
# update the message_id once its created # update the message_id once its created
+13 -11
View File
@@ -24,24 +24,26 @@ class VerificationView(nextcord.ui.View):
self, button: nextcord.ui.Button, interaction: nextcord.Interaction self, button: nextcord.ui.Button, interaction: nextcord.Interaction
): # pylint: disable=unused-argument ): # pylint: disable=unused-argument
"""Button for approving score submission.""" """Button for approving score submission."""
content = interaction.message.embeds[0].to_dict() for embed in interaction.message.embeds:
content = embed.to_dict()
for field in content["fields"]: for field in content["fields"]:
if field["name"] == "GroupId": if field["name"] == "GroupId":
group_id = int(field["value"]) group_id = int(field["value"])
elif field["name"] == "CategoryId": elif field["name"] == "CategoryId":
category_id = int(field["value"]) category_id = int(field["value"])
elif field["name"] == "Score": elif field["name"] == "Score":
score = float(field["value"]) score = float(field["value"])
elif field["name"] == "User Name": elif field["name"] == "User Name":
user = field["value"] user = field["value"]
try: try:
await submit_score(interaction, group_id, category_id, user, score) await submit_score(interaction, group_id, category_id, user, score)
content = interaction.message.content content = interaction.message.content
content += f"\nApproved by <@{interaction.user.id}>." content += f"\nApproved by <@{interaction.user.id}>."
await interaction.message.edit(content=content, view=None) # remove the bot information embed. it should always be the first one.
await interaction.message.edit(content=content, view=None, embed=interaction.message.embeds[0])
except UnboundLocalError: except UnboundLocalError:
await interaction.send("Instruct user to submit with all fields.") await interaction.send("Instruct user to submit with all fields.")
await interaction.message.edit(view=None) await interaction.message.edit(view=None)