generated from HoloTech/holotech-plugin-template
(discord): Fill in discord interfaces
This commit is contained in:
@@ -16,9 +16,8 @@ from meta import LionBot
|
||||
from meta.errors import UserInputError
|
||||
from meta.config import conf
|
||||
from utils.lib import tabulate, utc_now, MessageArgs, parse_duration
|
||||
from utils.ui import MessageUI, AButton, AsComponents, ConfigEditor
|
||||
from utils.ui import MessageUI
|
||||
from utils.ui.micros import FastModal
|
||||
from utils.ui.pagers import BasePager, Pager
|
||||
|
||||
from ...campaign import RewardCampaign
|
||||
from ...data import EarnedReward
|
||||
@@ -134,7 +133,38 @@ class RewardList(MessageUI):
|
||||
value = int(selected.values[0])
|
||||
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)
|
||||
|
||||
@modal.submit_callback()
|
||||
async def on_editor_submit(interaction: discord.Interaction):
|
||||
update_args = {}
|
||||
|
||||
if modal.flufbox.component.value and not currently_fluffed:
|
||||
# Reward has been fluffed
|
||||
update_args['fulfilled_at'] = utc_now()
|
||||
elif currently_fluffed and not modal.flufbox.component.value:
|
||||
# Reward has been unfluffed
|
||||
update_args['fulfilled_at'] = None
|
||||
|
||||
new_ref_value = modal.reference.value or None
|
||||
if new_ref_value != reward.reference:
|
||||
update_args['reference'] = new_ref_value
|
||||
|
||||
new_notes_value = modal.notes.value or None
|
||||
if new_notes_value != reward.modnote:
|
||||
update_args['modnote'] = new_notes_value
|
||||
|
||||
if update_args:
|
||||
await interaction.response.defer(thinking=True, ephemeral=True)
|
||||
await self.campaign.update_reward(reward.earned_id, **update_args)
|
||||
await self.refresh(thinking=interaction)
|
||||
else:
|
||||
await interaction.response.defer(thinking=False)
|
||||
|
||||
|
||||
await selection.response.send_modal(modal)
|
||||
|
||||
await self.refresh()
|
||||
else:
|
||||
await selection.response.defer()
|
||||
@@ -200,7 +230,7 @@ class RewardList(MessageUI):
|
||||
'Earned At': discord.utils.format_dt(reward.earned_at, 'F'),
|
||||
'Earned From': reward.earned_from,
|
||||
'Fulfilled At': fluf,
|
||||
'Reference': "*No reference set*",
|
||||
'Reference': reward.reference or "*No reference set*",
|
||||
'Further notes': reward.modnote or "*No notes*",
|
||||
}
|
||||
prop_table = '\n'.join(tabulate(*table.items()))
|
||||
|
||||
Reference in New Issue
Block a user