mirror of
https://github.com/RafaelSolVargas/Vulkan.git
synced 2025-10-29 16:57:23 +00:00
36 lines
1.8 KiB
Python
36 lines
1.8 KiB
Python
from Messages.Responses.AbstractCogResponse import AbstractCommandResponse
|
|
from Handlers.HandlerResponse import HandlerResponse
|
|
from Messages.MessagesCategory import MessagesCategory
|
|
from Messages.DiscordMessages import VAbstractMessage, VWebHookMessage
|
|
from discord import ApplicationContext
|
|
|
|
|
|
class SlashEmbedResponse(AbstractCommandResponse):
|
|
def __init__(self, response: HandlerResponse, ctx: ApplicationContext, category: MessagesCategory) -> None:
|
|
self.__ctx = ctx
|
|
super().__init__(response, category)
|
|
|
|
async def run(self, deleteLast: bool = True) -> None:
|
|
message = None
|
|
# If the response has both embed and view to send
|
|
if self.response.embed and self.response.view:
|
|
# Respond the Slash command and set the view to contain the sended message
|
|
message = await self.__ctx.send_followup(embed=self.response.embed, view=self.response.view)
|
|
self.response.view.set_message(message)
|
|
|
|
# If the response only has the embed then send the embed
|
|
elif self.response.embed:
|
|
message = await self.__ctx.send_followup(embed=self.response.embed)
|
|
else:
|
|
message = await self.__ctx.send_followup('Ok!')
|
|
|
|
# If any message was sended
|
|
if message:
|
|
# Convert the Discord message type to an Vulkan type
|
|
vMessage: VAbstractMessage = VWebHookMessage(message)
|
|
# Only delete the previous message if this is not error and not forbidden by method caller
|
|
if deleteLast and self.response.success:
|
|
await self.manager.addMessageAndClearPrevious(self.context.guild.id, self.category, vMessage, self.response.view)
|
|
else:
|
|
self.manager.addMessage(self.context.guild.id, self.category, vMessage)
|