82 lines
3.6 KiB
Java
82 lines
3.6 KiB
Java
package com.alttd.modalManager.modals;
|
|
|
|
import com.alttd.modalManager.DiscordModal;
|
|
import com.alttd.util.UserToMessageTracker;
|
|
import com.alttd.util.Util;
|
|
import net.dv8tion.jda.api.components.label.Label;
|
|
import net.dv8tion.jda.api.components.textinput.TextInput;
|
|
import net.dv8tion.jda.api.components.textinput.TextInputStyle;
|
|
import net.dv8tion.jda.api.entities.Member;
|
|
import net.dv8tion.jda.api.entities.Message;
|
|
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
|
|
import net.dv8tion.jda.api.interactions.modals.ModalMapping;
|
|
import net.dv8tion.jda.api.modals.Modal;
|
|
import net.dv8tion.jda.api.requests.RestAction;
|
|
|
|
public class ModalReplySuggestion extends DiscordModal {
|
|
|
|
public final static UserToMessageTracker userToMessageTracker = new UserToMessageTracker();
|
|
|
|
@Override
|
|
public String getModalId() {
|
|
return "reply_suggestion";
|
|
}
|
|
|
|
@Override
|
|
public void execute(ModalInteractionEvent event) {
|
|
ModalMapping modalMapping = event.getInteraction().getValue("response");
|
|
if (modalMapping == null) {
|
|
event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to find response in modal"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
|
return;
|
|
}
|
|
|
|
String response = modalMapping.getAsString();
|
|
if (response.isEmpty()) {
|
|
event.replyEmbeds(Util.genericErrorEmbed("Error", "Response in modal is empty"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
|
return;
|
|
}
|
|
|
|
Member member = event.getMember();
|
|
if (member == null) {
|
|
event.replyEmbeds(Util.genericErrorEmbed("Error", "This modal only works from within a guild"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
|
return;
|
|
}
|
|
|
|
Message message = userToMessageTracker.pullMessage(member.getIdLong());
|
|
if (message == null) {
|
|
event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to find a message for this modal"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
|
return;
|
|
}
|
|
|
|
String[] split = message.getContentRaw().split("\u200B");
|
|
if (split.length == 0) {
|
|
event.replyEmbeds(Util.genericErrorEmbed("Error", "The suggestion to be edited has no content"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
|
return;
|
|
}
|
|
|
|
message.editMessage(split[0] + "\u200B\n\n" + "**Response by: " + member.getAsMention() + "**\n_" + response.replaceAll("\u200B", "") + "_")
|
|
.queue(success -> event.replyEmbeds(Util.genericSuccessEmbed("Success", "Responded to the suggestion!"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure),
|
|
failure -> event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to edit the suggestion"))
|
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure));
|
|
}
|
|
|
|
@Override
|
|
public Modal getModal() {
|
|
TextInput body = TextInput.create("response", TextInputStyle.PARAGRAPH)
|
|
.setPlaceholder("Response...")
|
|
.setRequiredRange(10, 1024)
|
|
.setRequired(true)
|
|
.build();
|
|
|
|
return Modal.create(getModalId(), "Suggestion Response")
|
|
.addComponents(Label.of("Response", body))
|
|
.build();
|
|
}
|
|
}
|