From 27122538e4f1a4c1070786b385658ff8acd90e6b Mon Sep 17 00:00:00 2001 From: Stijn Date: Fri, 8 Apr 2022 21:56:58 +0200 Subject: [PATCH] Added embed templates and basic validation for channels --- src/main/java/com/alttd/util/Util.java | 64 ++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alttd/util/Util.java b/src/main/java/com/alttd/util/Util.java index f106aaa..3576c07 100644 --- a/src/main/java/com/alttd/util/Util.java +++ b/src/main/java/com/alttd/util/Util.java @@ -1,7 +1,6 @@ package com.alttd.util; import com.alttd.commandManager.CommandManager; -import com.alttd.commandManager.DiscordCommand; import com.alttd.commandManager.ScopeInfo; import com.alttd.commandManager.SubCommand; import com.alttd.config.MessagesConfig; @@ -10,15 +9,14 @@ import com.alttd.templates.Template; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.*; -import net.dv8tion.jda.api.interactions.commands.Command; import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction; import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData; import net.dv8tion.jda.api.requests.RestAction; +import org.jetbrains.annotations.NotNull; import java.awt.*; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -74,6 +72,30 @@ public class Util { .build(); } + public static MessageEmbed genericErrorEmbed(String title, String desc) { + return new EmbedBuilder() + .setTitle(title) + .setDescription(desc) + .setColor(Color.RED) + .build(); + } + + public static MessageEmbed genericSuccessEmbed(String title, String desc) { + return new EmbedBuilder() + .setTitle(title) + .setDescription(desc) + .setColor(Color.GREEN) + .build(); + } + + public static MessageEmbed genericWaitingEmbed(String title, String desc) { + return new EmbedBuilder() + .setTitle(title) + .setDescription(desc) + .setColor(Color.BLUE) + .build(); + } + public static void registerCommand(CommandManager commandManager, JDA jda, SlashCommandData slashCommandData, String commandName) { for (ScopeInfo info : commandManager.getActiveLocations(commandName)) { switch (info.getScope()) { @@ -82,7 +104,7 @@ public class Util { Guild guildById = jda.getGuildById(info.getId()); if (guildById == null) { - Logger.warning("Tried to add command % to invalid guild %", commandName, String.valueOf(info.getId())); + Logger.warning("Tried to add command % to invalid guild %.", commandName, String.valueOf(info.getId())); continue; } guildById.updateCommands().addCommands(slashCommandData).queue(RestAction.getDefaultSuccess(), Util::handleFailure); @@ -96,4 +118,38 @@ public class Util { for (SubCommand subCommand : subCommands) subCommandMap.put(subCommand.getName(), subCommand); } + + public static boolean validateGuildMessageChannel(SlashCommandInteraction interaction, GuildMessageChannel channel, ChannelType channelType, @NotNull Member member) { + if (channel == null) { + interaction.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to find the TextChannel.")) + .setEphemeral(true) + .queue(); + return false; + } + if (channelType != null && !channel.getType().equals(channelType)) { + interaction.replyEmbeds(Util.genericErrorEmbed("Error", "Please specify a " + channelType + " channel.")) + .setEphemeral(true) + .queue(); + return false; + } + if (!channel.canTalk()) { + interaction.replyEmbeds(Util.genericErrorEmbed("Error", "I can't talk in this channel.")) + .setEphemeral(true) + .queue(); + } + if (!channel.canTalk(member)) { + interaction.replyEmbeds(Util.genericErrorEmbed("Error", "You can't talk in this channel.")) + .setEphemeral(true) + .queue(); + return false; + } + return true; + } + + public static EmbedBuilder getFirstEmbedBuilder(Message message) { + if (message.getEmbeds().isEmpty()) + return null; + MessageEmbed messageEmbed = message.getEmbeds().get(0); + return new EmbedBuilder(messageEmbed); + } }