mirror of
https://github.com/RafaelSolVargas/Vulkan.git
synced 2025-10-29 16:57:23 +00:00
Adding support to slash commands
This commit is contained in:
35
Messages/Responses/SlashEmbedResponse.py
Normal file
35
Messages/Responses/SlashEmbedResponse.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user