rewrite (ui): Don't pass view to hooked.
This commit is contained in:
@@ -416,7 +416,7 @@ class Reminders(LionCog):
|
||||
)
|
||||
|
||||
@AButton(label=t(_p('cmd:reminders_clear|confirm|button:yes', "Yes, clear my reminders")))
|
||||
async def confirm(view, interaction, press):
|
||||
async def confirm(interaction, press):
|
||||
await interaction.response.defer()
|
||||
reminders = await self.data.Reminder.table.delete_where(userid=ctx.author.id)
|
||||
await self.talk_cancel(*(r['reminderid'] for r in reminders)).send(self.executor_name, wait_for_reply=False)
|
||||
@@ -430,14 +430,14 @@ class Reminders(LionCog):
|
||||
),
|
||||
view=None
|
||||
)
|
||||
await view.close()
|
||||
await press.view.close()
|
||||
await self.dispatch_update_for(ctx.author.id)
|
||||
|
||||
@AButton(label=t(_p('cmd:reminders_clear|confirm|button:cancel', "Cancel")))
|
||||
async def deny(view, interaction, press):
|
||||
async def deny(interaction, press):
|
||||
await interaction.response.defer()
|
||||
await ctx.interaction.delete_original_response()
|
||||
await view.close()
|
||||
await press.view.close()
|
||||
|
||||
components = AsComponents(confirm, deny)
|
||||
await ctx.interaction.response.send_message(embed=embed, view=components, ephemeral=True)
|
||||
@@ -620,7 +620,7 @@ class Reminders(LionCog):
|
||||
self,
|
||||
ctx: LionContext,
|
||||
time: Transform[int, DurationTransformer(60)],
|
||||
reminder: str, # TODO: Maximum length 1000?
|
||||
reminder: appcmds.Range[str, 1, 1000], # TODO: Maximum length 1000?
|
||||
every: Optional[Transform[int, DurationTransformer(60)]] = None
|
||||
):
|
||||
t = self.bot.translator.t
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
import time
|
||||
|
||||
import discord
|
||||
from discord.ui.item import Item
|
||||
from discord.ui.button import Button
|
||||
|
||||
from .leo import LeoUI
|
||||
@@ -18,8 +22,8 @@ class HookedItem:
|
||||
self.pass_kwargs = pass_kwargs
|
||||
|
||||
def __call__(self, coro):
|
||||
async def wrapped(view, interaction, **kwargs):
|
||||
return await coro(view, interaction, self, **kwargs, **self.pass_kwargs)
|
||||
async def wrapped(interaction, **kwargs):
|
||||
return await coro(interaction, self, **(self.pass_kwargs | kwargs))
|
||||
self.callback = wrapped
|
||||
return self
|
||||
|
||||
@@ -37,10 +41,19 @@ class AsComponents(LeoUI):
|
||||
self.pass_kwargs = pass_kwargs
|
||||
|
||||
for item in items:
|
||||
item.callback = self.wrap_callback(item.callback)
|
||||
self.add_item(item)
|
||||
|
||||
def wrap_callback(self, coro):
|
||||
async def wrapped(*args, **kwargs):
|
||||
return await coro(self, *args, **kwargs, **self.pass_kwargs)
|
||||
return wrapped
|
||||
async def _scheduled_task(self, item: Item, interaction: discord.Interaction):
|
||||
try:
|
||||
item._refresh_state(interaction, interaction.data) # type: ignore
|
||||
|
||||
allow = await self.interaction_check(interaction)
|
||||
if not allow:
|
||||
return
|
||||
|
||||
if self.timeout:
|
||||
self.__timeout_expiry = time.monotonic() + self.timeout
|
||||
|
||||
await item.callback(interaction, **self.pass_kwargs)
|
||||
except Exception as e:
|
||||
return await self.on_error(interaction, e, item)
|
||||
|
||||
Reference in New Issue
Block a user