2024-03-17 00:42:36 +00:00
|
|
|
from functools import cached_property
|
|
|
|
from typing import Any, Dict, List, Union
|
|
|
|
|
|
|
|
from discord.ui import button
|
|
|
|
|
|
|
|
from discord.enums import ButtonStyle
|
|
|
|
from discord.interactions import Interaction
|
|
|
|
from discord.ui import Button, View
|
|
|
|
|
|
|
|
from RUNA.UI.Embed import ChristmasEmbed
|
|
|
|
|
|
|
|
class Mail_Paginator(View):
|
|
|
|
def __init__(
|
|
|
|
self,
|
|
|
|
senduser: int,
|
|
|
|
embeds: list[ChristmasEmbed],
|
|
|
|
timeout: int = 180,
|
|
|
|
|
|
|
|
):
|
|
|
|
super().__init__(timeout=timeout)
|
|
|
|
self.embeds = embeds
|
|
|
|
self.index = 0
|
|
|
|
self.senduser = senduser
|
|
|
|
self.selected = False
|
|
|
|
|
|
|
|
@cached_property
|
|
|
|
def total(self) -> int:
|
|
|
|
return len(self.embeds)
|
|
|
|
|
|
|
|
async def interaction_check(self, interaction: Interaction) -> bool:
|
|
|
|
if user := interaction.user:
|
|
|
|
if user.id == self.senduser.id:
|
|
|
|
return True
|
|
|
|
|
|
|
|
await interaction.response.send_message(
|
|
|
|
"명령어 실행자만 상호작용이 가능합니다.", ephemeral=True
|
|
|
|
)
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
@button(label="이전", style=ButtonStyle.primary, emoji="◀")
|
|
|
|
async def prev(self, button, interaction: Interaction) -> None:
|
|
|
|
self.index -= 1
|
|
|
|
|
|
|
|
if self.index < 0:
|
|
|
|
self.index = self.total - 1
|
|
|
|
|
|
|
|
await interaction.response.edit_message(embed=self.embeds[self.index])
|
|
|
|
|
|
|
|
@button(label="다음", style=ButtonStyle.primary, emoji="▶️")
|
|
|
|
async def next(self, button, interaction: Interaction) -> None:
|
|
|
|
self.index += 1
|
|
|
|
|
|
|
|
if self.index >= self.total:
|
|
|
|
self.index = 0
|
|
|
|
|
|
|
|
await interaction.response.edit_message(embed=self.embeds[self.index])
|
|
|
|
|
|
|
|
@button(label="닫기", style=ButtonStyle.danger, emoji="✖️")
|
|
|
|
async def close(self, button, interaction: Interaction) -> None:
|
|
|
|
await interaction.response.defer()
|
2023-11-26 15:27:32 +00:00
|
|
|
self.stop()
|