mirror of
https://github.com/RafaelSolVargas/Vulkan.git
synced 2025-10-29 16:57:23 +00:00
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from typing import List
|
|
from discord import Message
|
|
from discord.ui import View
|
|
from Config.Emojis import VEmojis
|
|
from Music.VulkanBot import VulkanBot
|
|
from UI.Views.AbstractView import AbstractView
|
|
from UI.Buttons.AbstractItem import AbstractItem
|
|
|
|
emojis = VEmojis()
|
|
|
|
|
|
class BasicView(View, AbstractView):
|
|
"""View that receives buttons to hold, in timeout disable buttons"""
|
|
|
|
def __init__(self, bot: VulkanBot, buttons: List[AbstractItem], timeout: float = 6000):
|
|
super().__init__(timeout=timeout)
|
|
self.__bot = bot
|
|
self.__message: Message = None
|
|
|
|
for button in buttons:
|
|
# Set the buttons to have a instance of the view that contains them
|
|
button.set_view(self)
|
|
self.add_item(button)
|
|
|
|
async def on_timeout(self) -> None:
|
|
# Disable all itens and, if has the message, edit it
|
|
try:
|
|
self.disable_all_items()
|
|
if self.__message is not None and isinstance(self.__message, Message):
|
|
await self.__message.edit(view=self)
|
|
except Exception as e:
|
|
print(f'[ERROR EDITING MESSAGE] -> {e}')
|
|
|
|
def set_message(self, message: Message) -> None:
|
|
self.__message = message
|
|
|
|
async def update(self):
|
|
if self.__message is not None:
|
|
await self.__message.edit(view=self)
|