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")))
|
@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()
|
await interaction.response.defer()
|
||||||
reminders = await self.data.Reminder.table.delete_where(userid=ctx.author.id)
|
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)
|
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
|
view=None
|
||||||
)
|
)
|
||||||
await view.close()
|
await press.view.close()
|
||||||
await self.dispatch_update_for(ctx.author.id)
|
await self.dispatch_update_for(ctx.author.id)
|
||||||
|
|
||||||
@AButton(label=t(_p('cmd:reminders_clear|confirm|button:cancel', "Cancel")))
|
@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 interaction.response.defer()
|
||||||
await ctx.interaction.delete_original_response()
|
await ctx.interaction.delete_original_response()
|
||||||
await view.close()
|
await press.view.close()
|
||||||
|
|
||||||
components = AsComponents(confirm, deny)
|
components = AsComponents(confirm, deny)
|
||||||
await ctx.interaction.response.send_message(embed=embed, view=components, ephemeral=True)
|
await ctx.interaction.response.send_message(embed=embed, view=components, ephemeral=True)
|
||||||
@@ -620,7 +620,7 @@ class Reminders(LionCog):
|
|||||||
self,
|
self,
|
||||||
ctx: LionContext,
|
ctx: LionContext,
|
||||||
time: Transform[int, DurationTransformer(60)],
|
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
|
every: Optional[Transform[int, DurationTransformer(60)]] = None
|
||||||
):
|
):
|
||||||
t = self.bot.translator.t
|
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 discord.ui.button import Button
|
||||||
|
|
||||||
from .leo import LeoUI
|
from .leo import LeoUI
|
||||||
@@ -18,8 +22,8 @@ class HookedItem:
|
|||||||
self.pass_kwargs = pass_kwargs
|
self.pass_kwargs = pass_kwargs
|
||||||
|
|
||||||
def __call__(self, coro):
|
def __call__(self, coro):
|
||||||
async def wrapped(view, interaction, **kwargs):
|
async def wrapped(interaction, **kwargs):
|
||||||
return await coro(view, interaction, self, **kwargs, **self.pass_kwargs)
|
return await coro(interaction, self, **(self.pass_kwargs | kwargs))
|
||||||
self.callback = wrapped
|
self.callback = wrapped
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@@ -37,10 +41,19 @@ class AsComponents(LeoUI):
|
|||||||
self.pass_kwargs = pass_kwargs
|
self.pass_kwargs = pass_kwargs
|
||||||
|
|
||||||
for item in items:
|
for item in items:
|
||||||
item.callback = self.wrap_callback(item.callback)
|
|
||||||
self.add_item(item)
|
self.add_item(item)
|
||||||
|
|
||||||
def wrap_callback(self, coro):
|
async def _scheduled_task(self, item: Item, interaction: discord.Interaction):
|
||||||
async def wrapped(*args, **kwargs):
|
try:
|
||||||
return await coro(self, *args, **kwargs, **self.pass_kwargs)
|
item._refresh_state(interaction, interaction.data) # type: ignore
|
||||||
return wrapped
|
|
||||||
|
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