runabot/RUNA/UI/Paginator.py
tmddn3070 6693186d40 FEAT: Inital commit
This Commit Contained Rebrand Patches
2024-03-17 09:42:36 +09:00

62 lines
1.9 KiB
Python

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()
self.stop()