Skip to content

Commit 2eeabcf

Browse files
committed
Embed Editor v0.1.8
1 parent b97011c commit 2eeabcf

File tree

3 files changed

+164
-12
lines changed

3 files changed

+164
-12
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>dev.Jacrispys</groupId>
88
<artifactId>InsideAgentDev</artifactId>
9-
<version>0.1.7</version>
9+
<version>0.1.8</version>
1010
<build>
1111
<plugins>
1212
<plugin>

src/main/java/dev/jacrispys/JavaBot/Commands/EmbedCLI.java

Lines changed: 161 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import net.dv8tion.jda.api.interactions.modals.ModalMapping;
2020

2121
import javax.annotation.Nonnull;
22+
import java.net.MalformedURLException;
23+
import java.net.URL;
2224
import java.util.ArrayList;
2325
import java.util.HashMap;
2426
import java.util.List;
@@ -45,18 +47,28 @@ private EmbedCLI() {
4547
}
4648

4749
protected Message generateEmbedMessage(String buttonId) {
48-
MessageBuilder message = new MessageBuilder();
50+
MessageBuilder message = new MessageBuilder("To be sent in: " + buttonIds.get(buttonId.replace("builder:", "")).getAsMention());
4951
EmbedBuilder builder = new EmbedBuilder();
5052
builder.setTitle("Example Title");
51-
builder.addField("", "To be sent in: " + buttonIds.get(buttonId.replace("builder:", "")).getAsMention(), false);
5253
message.setEmbeds(builder.build());
5354
List<ActionRow> components = new ArrayList<>();
5455
components.add(ActionRow.of(
5556
SelectMenu.create("select:" + buttonId.replace("builder:", ""))
56-
.addOption("Title", "title", "Set the Embed Title")
57+
.addOption("Title", "title", "Set the Embed Title!")
5758
.addOption("Color", "color", "Set the embed color!")
5859
.addOption("Add Field", "add", "Adds a new field!")
5960
.addOption("Remove Field", "remove", "Removes a field!")
61+
.addOption("Clear All Fields", "clear-fields", "Removes ALL Fields from the Embed!")
62+
.addOption("Set Footer", "footer", "Sets the footer of the embed!")
63+
.addOption("Clear Footer", "clear_footer", "Removes the current footer!")
64+
.addOption("Set Author", "author", "Sets the author of the Embed!")
65+
.addOption("Clear Author", "clear-author", "Removes the author from the embed!")
66+
.addOption("Set Image", "image", "Sets the image for the thumbnail!")
67+
.addOption("Clear Image", "clear-image", "Clears the Image of the Embed!")
68+
.addOption("Set Thumbnail", "thumbnail", "Sets the Embed thumbnail!")
69+
.addOption("Clear Thumbnail", "clear-thumbnail", "Removes the current thumbnail!")
70+
.addOption("Set Description", "desc", "Sets the description for the embed!")
71+
.addOption("Clear Description", "clear-desc", "Removes the description of the Embed!")
6072
.build()));
6173
components.add(ActionRow.of(Button.success("success:" + buttonId.replace("builder:", ""), "Send Embed!")));
6274
message.setActionRows(components);
@@ -66,30 +78,35 @@ protected Message generateEmbedMessage(String buttonId) {
6678
@Override
6779
public void onButtonInteraction(ButtonInteractionEvent event) {
6880
if (buttonIds.containsKey(event.getComponentId().replace("builder:", ""))) {
69-
event.deferReply(true).queue();
70-
event.getHook().editOriginal(generateEmbedMessage(event.getButton().getId())).queue();
81+
event.getInteraction().editMessage("Please use `/embedbuilder` again to reuse this command!").queue();
82+
// event.deferReply(true).queue();
83+
event.getHook().editOriginal(generateEmbedMessage(event.getComponentId())).queue();
7184
} else if (buttonIds.containsKey(event.getComponentId().replace("success:", ""))) {
7285
MessageEmbed embed = event.getMessage().getEmbeds().get(0);
7386
TextChannel channel = (TextChannel) buttonIds.get(event.getComponentId().replace("success:", ""));
7487
channel.sendMessage(new MessageBuilder(event.getUser().getAsMention() + " sent embed:").setEmbeds(embed).build()).queue();
7588
event.editMessage(new MessageBuilder("\u200B").build()).queue();
89+
buttonIds.remove(event.getComponentId().replace("success", ""));
90+
messageId.remove(event.getComponentId().replace("success", ""));
7691
}
7792
}
7893

7994
@Override
8095
public void onSelectMenuInteraction(SelectMenuInteractionEvent event) {
8196
if (buttonIds.containsKey(event.getComponentId().replace("select:", ""))) {
8297
String selection = event.getValues().get(0);
83-
if(selection.equalsIgnoreCase("add")) {
98+
if (selection.equalsIgnoreCase("add")) {
8499
TextInput header = TextInput.create("header", "Heading for Field", TextInputStyle.SHORT)
85100
.setMaxLength(200)
86101
.setMinLength(1)
87102
.setPlaceholder("header" + " for the embed.")
103+
.setRequired(false)
88104
.build();
89105
TextInput body = TextInput.create("body", "Body of the field", TextInputStyle.SHORT)
90106
.setMaxLength(200)
91107
.setMinLength(1)
92108
.setPlaceholder("Body for the embed.")
109+
.setRequired(false)
93110
.build();
94111
TextInput inline = TextInput.create("bool", "Boolean:True/False (Inline)", TextInputStyle.SHORT)
95112
.setMaxLength(5)
@@ -102,6 +119,84 @@ public void onSelectMenuInteraction(SelectMenuInteractionEvent event) {
102119
messageId.put(event.getComponentId().replace("select:", ""), event.getMessage());
103120
event.replyModal(modal).queue();
104121
return;
122+
} else if (selection.equalsIgnoreCase("footer")) {
123+
TextInput text = TextInput.create("foottext", "Text for the footer.", TextInputStyle.SHORT)
124+
.setMaxLength(200)
125+
.setMinLength(1)
126+
.setPlaceholder("Footer text.")
127+
.build();
128+
TextInput url = TextInput.create("url", "Icon URL (Optional)", TextInputStyle.SHORT)
129+
.setMaxLength(100)
130+
.setMinLength(0)
131+
.setPlaceholder("Icon for the footer.")
132+
.setRequired(false)
133+
.build();
134+
Modal modal = Modal.create(event.getComponentId().replace("select:", "modal:"), selection + " Input")
135+
.addActionRows(ActionRow.of(text), ActionRow.of(url))
136+
.build();
137+
messageId.put(event.getComponentId().replace("select:", ""), event.getMessage());
138+
event.replyModal(modal).queue();
139+
return;
140+
} else if (selection.equalsIgnoreCase("clear_footer")) {
141+
EmbedBuilder builder = new EmbedBuilder(event.getMessage().getEmbeds().get(0));
142+
event.editMessageEmbeds(builder.setFooter(null).build()).queue();
143+
return;
144+
} else if (selection.equalsIgnoreCase("author")) {
145+
TextInput text = TextInput.create("author-text", "Text for the Author.", TextInputStyle.SHORT)
146+
.setMaxLength(200)
147+
.setMinLength(1)
148+
.setPlaceholder("Author Name/Text.")
149+
.build();
150+
TextInput url = TextInput.create("author-url", "URL (Optional)", TextInputStyle.SHORT)
151+
.setMaxLength(100)
152+
.setMinLength(0)
153+
.setPlaceholder("Sets the link for the Author")
154+
.setRequired(false)
155+
.build();
156+
TextInput iconUrl = TextInput.create("icon-url", "Icon URL (Optional)", TextInputStyle.SHORT)
157+
.setMaxLength(100)
158+
.setMinLength(0)
159+
.setPlaceholder("Sets the Icon of the Author")
160+
.setRequired(false)
161+
.build();
162+
Modal modal = Modal.create(event.getComponentId().replace("select:", "modal:"), selection + " Input")
163+
.addActionRows(ActionRow.of(text), ActionRow.of(url), ActionRow.of(iconUrl))
164+
.build();
165+
messageId.put(event.getComponentId().replace("select:", ""), event.getMessage());
166+
event.replyModal(modal).queue();
167+
return;
168+
} else if (selection.equalsIgnoreCase("clear-author")) {
169+
EmbedBuilder builder = new EmbedBuilder(event.getMessage().getEmbeds().get(0));
170+
event.editMessageEmbeds(builder.setAuthor(null).build()).queue();
171+
return;
172+
} else if (selection.equalsIgnoreCase("clear-fields")) {
173+
EmbedBuilder builder = new EmbedBuilder(event.getMessage().getEmbeds().get(0));
174+
event.editMessageEmbeds(builder.clearFields().build()).queue();
175+
return;
176+
} else if (selection.equalsIgnoreCase("clear-image")) {
177+
EmbedBuilder builder = new EmbedBuilder(event.getMessage().getEmbeds().get(0));
178+
event.editMessageEmbeds(builder.setImage(null).build()).queue();
179+
return;
180+
} else if (selection.equalsIgnoreCase("clear-thumbnail")) {
181+
EmbedBuilder builder = new EmbedBuilder(event.getMessage().getEmbeds().get(0));
182+
event.editMessageEmbeds(builder.setThumbnail(null).build()).queue();
183+
return;
184+
} else if (selection.equalsIgnoreCase("desc")) {
185+
TextInput desc = TextInput.create(selection, selection, TextInputStyle.PARAGRAPH)
186+
.setMaxLength(4000)
187+
.setMinLength(1)
188+
.setPlaceholder("Description for the embed.")
189+
.build();
190+
Modal modal = Modal.create(event.getComponentId().replace("select:", "modal:"), selection + " Input")
191+
.addActionRow(desc)
192+
.build();
193+
messageId.put(event.getComponentId().replace("select:", ""), event.getMessage());
194+
event.replyModal(modal).queue();
195+
return;
196+
} else if (selection.equalsIgnoreCase("clear-desc")) {
197+
EmbedBuilder builder = new EmbedBuilder(event.getMessage().getEmbeds().get(0));
198+
event.editMessageEmbeds(builder.setDescription(null).build()).queue();
199+
return;
105200
}
106201
TextInput title = TextInput.create(selection, selection, TextInputStyle.SHORT)
107202
.setMaxLength(200)
@@ -116,6 +211,7 @@ public void onSelectMenuInteraction(SelectMenuInteractionEvent event) {
116211
}
117212
}
118213

214+
@SuppressWarnings("all")
119215
@Override
120216
public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
121217
if (buttonIds.containsKey(event.getModalId().replace("modal:", ""))) {
@@ -133,9 +229,9 @@ public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
133229
event.reply("Color must be formatted as '0xHEX' example: 0xffffff").setEphemeral(true).queue();
134230
}
135231
}
136-
case "header","body","bool" -> {
137-
boolean bool = Boolean.parseBoolean(event.getValue("bool").getAsString());
138-
event.editMessageEmbeds(builder.addField(event.getValue("header").getAsString(), event.getValue("body").getAsString(), bool).build()).queue();
232+
case "header", "body", "bool" -> {
233+
boolean bool = Boolean.parseBoolean(event.getValue("bool").getAsString());
234+
event.editMessageEmbeds(builder.addField((event.getValue("header") == null ? null : event.getValue("header").getAsString()), (event.getValue("body") == null ? null : event.getValue("body").getAsString()), bool).build()).queue();
139235

140236
}
141237
case "remove" -> {
@@ -150,6 +246,62 @@ public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
150246
event.reply("Must be an integer, and the index must exist!").setEphemeral(true).queue();
151247
}
152248
}
249+
case "footer", "foottext", "url" -> {
250+
URL url = null;
251+
if (event.getValue("url") != null) {
252+
try {
253+
url = new URL(event.getValue("url").getAsString());
254+
} catch (MalformedURLException ex) {
255+
event.reply("Invalid URL! Please try again!").setEphemeral(true).queue();
256+
}
257+
}
258+
String foot = event.getValue("foottext").getAsString();
259+
if (url != null) {
260+
builder.setFooter(foot, url.toString());
261+
} else {
262+
builder.setFooter(foot);
263+
}
264+
event.editMessageEmbeds(builder.build()).queue();
265+
}
266+
case "icon-url", "author-text", "author-url" -> {
267+
URL icon = null;
268+
URL author = null;
269+
if (event.getValue("author-url") != null) {
270+
try {
271+
author = new URL(event.getValue("author-url").getAsString());
272+
} catch (MalformedURLException ignored) {
273+
}
274+
}
275+
if (event.getValue("icon-url") != null) {
276+
try {
277+
icon = new URL(event.getValue("icon-url").getAsString());
278+
} catch (MalformedURLException ignored) {
279+
}
280+
}
281+
builder.setAuthor(event.getValue("author-text").getAsString(), (author == null ? null : author.toString()), (icon == null ? null : icon.toString()));
282+
event.editMessageEmbeds(builder.build()).queue();
283+
}
284+
case "image" -> {
285+
URL image = null;
286+
if (event.getValue("image") != null) {
287+
try {
288+
image = new URL(event.getValue("image").getAsString());
289+
} catch (MalformedURLException ignored) {
290+
}
291+
}
292+
event.editMessageEmbeds(builder.setImage(image != null ? image.toString() : null).build()).queue();
293+
}
294+
case "thumbnail" -> {
295+
URL image = null;
296+
if (event.getValue("thumbnail") != null) {
297+
try {
298+
image = new URL(event.getValue("thumbnail").getAsString());
299+
} catch (MalformedURLException ignored) {
300+
}
301+
}
302+
event.editMessageEmbeds(builder.setThumbnail(image != null ? image.toString() : null).build()).queue();
303+
}
304+
case "desc" -> event.editMessageEmbeds(builder.setDescription(event.getValue("desc").getAsString()).build()).queue();
153305

154306
}
155307
}

src/main/java/dev/jacrispys/JavaBot/JavaBotMain.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public static void main(String[] args) throws Exception {
4444
logger.info("{} - Jansi Installed.", className);
4545

4646
logger.info("{} - Logging into bot & discord servers...", className);
47-
JDA jda = JDABuilder.createDefault(devToken)
47+
JDA jda = JDABuilder.createDefault(botToken)
4848
.setChunkingFilter(ChunkingFilter.ALL)
4949
.setMemberCachePolicy(MemberCachePolicy.ALL)
5050
.enableIntents(GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_PRESENCES)
@@ -66,7 +66,7 @@ public static void main(String[] args) throws Exception {
6666
audioManager.registerSourceManager(new SpotifySourceManager(null, spotifyConfig, audioManager));
6767
AudioSourceManagers.registerRemoteSources(audioManager);
6868

69-
jda.getPresence().setActivity(Activity.streaming("Version-0.1.7 Woo!", "https://www.twitch.tv/jacrispyslive"));
69+
jda.getPresence().setActivity(Activity.streaming("Version-0.1.8 Woo!", "https://www.twitch.tv/jacrispyslive"));
7070
logger.info("{} - Starting event listeners...", className);
7171
jda.addEventListener(new SlashMusicCommands());
7272
jda.addEventListener(new DefaultPrivateMessageResponse());

0 commit comments

Comments
 (0)