generated from HoloTech/holotech-plugin-template
fix: Reward formatting and acmpl
This commit is contained in:
@@ -369,11 +369,11 @@ class CampaignCog(LionCog):
|
||||
# Reward has been unfluffed
|
||||
update_args["fulfilled_at"] = None
|
||||
|
||||
new_ref_value = modal.reference.value or None
|
||||
new_ref_value = modal.reference.component.value or None
|
||||
if new_ref_value != reward.reference:
|
||||
update_args["reference"] = new_ref_value
|
||||
|
||||
new_notes_value = modal.notes.value or None
|
||||
new_notes_value = modal.notes.component.value or None
|
||||
if new_notes_value != reward.modnote:
|
||||
update_args["modnote"] = new_notes_value
|
||||
|
||||
@@ -394,7 +394,11 @@ class CampaignCog(LionCog):
|
||||
|
||||
#100: username in campaign
|
||||
"""
|
||||
...
|
||||
return "#{rewardid}: {username} in {cname}".format(
|
||||
rewardid=reward.earned_id,
|
||||
username=reward.twitch_user_name or reward.twitch_user_id or "Unknown",
|
||||
cname=campaign.row.campaign_name,
|
||||
)
|
||||
|
||||
@campaign_editreward_cmd.autocomplete("rewardid")
|
||||
async def _reward_acmpl(
|
||||
|
||||
@@ -29,15 +29,13 @@ class RewardEditor(FastModal):
|
||||
# Title is the reward we are editing
|
||||
|
||||
# Block of text with dates and user info
|
||||
blurb = discord.ui.TextDisplay(content='placeholder')
|
||||
blurb = discord.ui.TextDisplay(content="placeholder")
|
||||
|
||||
# Fulfilled is a checkbox, and supports a fulfilled note
|
||||
flufbox = discord.ui.Label(
|
||||
text="Fulfilled",
|
||||
description="Whether this reward has been completed",
|
||||
component=discord.ui.Checkbox(
|
||||
default=False
|
||||
)
|
||||
component=discord.ui.Checkbox(default=False),
|
||||
)
|
||||
|
||||
# Reference and further notes need to be editable,
|
||||
@@ -47,6 +45,7 @@ class RewardEditor(FastModal):
|
||||
description="Reference URL or other information",
|
||||
component=discord.ui.TextInput(
|
||||
style=discord.TextStyle.long,
|
||||
required=False,
|
||||
),
|
||||
)
|
||||
notes = discord.ui.Label(
|
||||
@@ -54,6 +53,7 @@ class RewardEditor(FastModal):
|
||||
description="Further notes for this user/reward",
|
||||
component=discord.ui.TextInput(
|
||||
style=discord.TextStyle.long,
|
||||
required=False,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -64,19 +64,18 @@ class RewardEditor(FastModal):
|
||||
|
||||
# blurb
|
||||
table = {
|
||||
'Earned At': discord.utils.format_dt(reward.earned_at, 'F'),
|
||||
'Earned From': reward.earned_from,
|
||||
"Earned At": discord.utils.format_dt(reward.earned_at, "F"),
|
||||
"Earned From": reward.earned_from,
|
||||
}
|
||||
prop_table = '\n'.join(tabulate(*table.items()))
|
||||
prop_table = "\n".join(tabulate(*table.items()))
|
||||
self.blurb.content = prop_table
|
||||
|
||||
|
||||
# Fulfilled
|
||||
self.flufbox.component.default = (reward.fulfilled_at is not None)
|
||||
self.flufbox.component.default = reward.fulfilled_at is not None
|
||||
|
||||
# Notes
|
||||
self.reference.component.default = reward.reference or ''
|
||||
self.notes.component.default = reward.modnote or ''
|
||||
self.reference.component.default = reward.reference or ""
|
||||
self.notes.component.default = reward.modnote or ""
|
||||
|
||||
return self
|
||||
|
||||
@@ -134,7 +133,7 @@ class RewardList(MessageUI):
|
||||
reward = next(r for r in self._rewards if r.earned_id == value)
|
||||
modal = RewardEditor.from_reward(reward)
|
||||
|
||||
currently_fluffed = (reward.fulfilled_at is not None)
|
||||
currently_fluffed = reward.fulfilled_at is not None
|
||||
|
||||
@modal.submit_callback()
|
||||
async def on_editor_submit(interaction: discord.Interaction):
|
||||
@@ -142,18 +141,18 @@ class RewardList(MessageUI):
|
||||
|
||||
if modal.flufbox.component.value and not currently_fluffed:
|
||||
# Reward has been fluffed
|
||||
update_args['fulfilled_at'] = utc_now()
|
||||
update_args["fulfilled_at"] = utc_now()
|
||||
elif currently_fluffed and not modal.flufbox.component.value:
|
||||
# Reward has been unfluffed
|
||||
update_args['fulfilled_at'] = None
|
||||
update_args["fulfilled_at"] = None
|
||||
|
||||
new_ref_value = modal.reference.value or None
|
||||
new_ref_value = modal.reference.component.value or None
|
||||
if new_ref_value != reward.reference:
|
||||
update_args['reference'] = new_ref_value
|
||||
update_args["reference"] = new_ref_value
|
||||
|
||||
new_notes_value = modal.notes.value or None
|
||||
new_notes_value = modal.notes.component.value or None
|
||||
if new_notes_value != reward.modnote:
|
||||
update_args['modnote'] = new_notes_value
|
||||
update_args["modnote"] = new_notes_value
|
||||
|
||||
if update_args:
|
||||
await interaction.response.defer(thinking=True, ephemeral=True)
|
||||
@@ -162,7 +161,6 @@ class RewardList(MessageUI):
|
||||
else:
|
||||
await interaction.response.defer(thinking=False)
|
||||
|
||||
|
||||
await selection.response.send_modal(modal)
|
||||
|
||||
await self.refresh()
|
||||
@@ -173,14 +171,10 @@ class RewardList(MessageUI):
|
||||
menu = self.reward_menu
|
||||
rewards = self.page
|
||||
if rewards:
|
||||
menu.options = [
|
||||
self._format_reward_option(r) for r in rewards
|
||||
]
|
||||
menu.options = [self._format_reward_option(r) for r in rewards]
|
||||
menu.disabled = False
|
||||
else:
|
||||
menu.options = [
|
||||
SelectOption(label='DUMMY')
|
||||
]
|
||||
menu.options = [SelectOption(label="DUMMY")]
|
||||
menu.disabled = True
|
||||
|
||||
# Meta buttons
|
||||
@@ -217,7 +211,7 @@ class RewardList(MessageUI):
|
||||
name = f"Reward #{reward.earned_id} earned by {reward.twitch_user_name or reward.twitch_user_id}"
|
||||
|
||||
if reward.fulfilled_at is not None:
|
||||
fat = discord.utils.format_dt(reward.fulfilled_at, 'F')
|
||||
fat = discord.utils.format_dt(reward.fulfilled_at, "F")
|
||||
if reward.fulfilled_note is not None:
|
||||
fluf = f"{fat} ({reward.fulfilled_note})"
|
||||
else:
|
||||
@@ -226,14 +220,14 @@ class RewardList(MessageUI):
|
||||
fluf = "*Not Fulfilled*"
|
||||
|
||||
table = {
|
||||
'Reward': "Plus Campaign Sketch",
|
||||
'Earned At': discord.utils.format_dt(reward.earned_at, 'F'),
|
||||
'Earned From': reward.earned_from,
|
||||
'Fulfilled At': fluf,
|
||||
'Reference': reward.reference or "*No reference set*",
|
||||
'Further notes': reward.modnote or "*No notes*",
|
||||
"Reward": "Plus Campaign Sketch",
|
||||
"Earned At": discord.utils.format_dt(reward.earned_at, "F"),
|
||||
"Earned From": reward.earned_from,
|
||||
"Fulfilled At": fluf,
|
||||
"Reference": reward.reference or "*No reference set*",
|
||||
"Further notes": reward.modnote or "*No notes*",
|
||||
}
|
||||
prop_table = '\n'.join(tabulate(*table.items()))
|
||||
prop_table = "\n".join(tabulate(*table.items()))
|
||||
|
||||
return (name, prop_table)
|
||||
|
||||
@@ -246,14 +240,10 @@ class RewardList(MessageUI):
|
||||
name = f"Reward #{reward.earned_id} earned by {reward.twitch_user_name or reward.twitch_user_id}"
|
||||
value = reward.earned_id
|
||||
|
||||
return SelectOption(
|
||||
label=name, value=str(value)
|
||||
)
|
||||
return SelectOption(label=name, value=str(value))
|
||||
|
||||
async def refresh_layout(self):
|
||||
to_refresh = (
|
||||
self.reward_menu_refresh(),
|
||||
)
|
||||
to_refresh = (self.reward_menu_refresh(),)
|
||||
await asyncio.gather(*to_refresh)
|
||||
|
||||
if self.page_count <= 1:
|
||||
@@ -264,13 +254,18 @@ class RewardList(MessageUI):
|
||||
self.next_page_button.disabled = False
|
||||
|
||||
self.set_layout(
|
||||
(self.prev_page_button, self.refresh_button, self.next_page_button, self.quit_button),
|
||||
(
|
||||
self.prev_page_button,
|
||||
self.refresh_button,
|
||||
self.next_page_button,
|
||||
self.quit_button,
|
||||
),
|
||||
(self.reward_menu,),
|
||||
)
|
||||
|
||||
async def make_message(self) -> MessageArgs:
|
||||
embed = discord.Embed(title=f"{self.campaign.row.campaign_name} Reward List")
|
||||
embed.set_footer(text='Last Update')
|
||||
embed.set_footer(text="Last Update")
|
||||
embed.timestamp = utc_now()
|
||||
|
||||
campaign = self.campaign
|
||||
@@ -284,7 +279,6 @@ class RewardList(MessageUI):
|
||||
|
||||
embed.description = description
|
||||
|
||||
|
||||
for reward in self.page:
|
||||
name, value = self._format_reward_section(reward)
|
||||
embed.add_field(name=name, value=value, inline=False)
|
||||
|
||||
Reference in New Issue
Block a user