diff --git a/sdcf4j-discord4j/src/main/java/de/btobastian/sdcf4j/handler/Discord4JHandler.java b/sdcf4j-discord4j/src/main/java/de/btobastian/sdcf4j/handler/Discord4JHandler.java index dbbad16..35a5f1f 100644 --- a/sdcf4j-discord4j/src/main/java/de/btobastian/sdcf4j/handler/Discord4JHandler.java +++ b/sdcf4j-discord4j/src/main/java/de/btobastian/sdcf4j/handler/Discord4JHandler.java @@ -24,12 +24,14 @@ import sx.blah.discord.Discord4J; import sx.blah.discord.api.IDiscordClient; import sx.blah.discord.api.events.IListener; +import sx.blah.discord.api.internal.json.objects.EmbedObject; import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; import sx.blah.discord.handle.obj.IChannel; import sx.blah.discord.handle.obj.IGuild; import sx.blah.discord.handle.obj.IMessage; import sx.blah.discord.handle.obj.IUser; import sx.blah.discord.util.DiscordException; +import sx.blah.discord.util.MessageBuilder; import sx.blah.discord.util.MissingPermissionsException; import sx.blah.discord.util.RateLimitException; @@ -147,7 +149,13 @@ private void invokeMethod(SimpleCommand command, MessageReceivedEvent event, Obj } if (reply != null) { try { - event.getMessage().getChannel().sendMessage(String.valueOf(reply)); + if (reply instanceof EmbedObject) { + event.getMessage().getChannel().sendMessage((EmbedObject) reply); + } else if (reply instanceof MessageBuilder) { + ((MessageBuilder) reply).withChannel(event.getChannel()).send(); + } else { + event.getMessage().getChannel().sendMessage(String.valueOf(reply)); + } } catch (MissingPermissionsException | RateLimitException | DiscordException ignored) { } } } diff --git a/sdcf4j-javacord/src/main/java/de/btobastian/sdcf4j/handler/JavacordHandler.java b/sdcf4j-javacord/src/main/java/de/btobastian/sdcf4j/handler/JavacordHandler.java index 5e62e07..318c3ae 100644 --- a/sdcf4j-javacord/src/main/java/de/btobastian/sdcf4j/handler/JavacordHandler.java +++ b/sdcf4j-javacord/src/main/java/de/btobastian/sdcf4j/handler/JavacordHandler.java @@ -31,6 +31,8 @@ import org.javacord.api.entity.channel.TextChannel; import org.javacord.api.entity.message.Message; import org.javacord.api.entity.message.MessageAuthor; +import org.javacord.api.entity.message.MessageBuilder; +import org.javacord.api.entity.message.embed.EmbedBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import org.javacord.api.event.message.MessageCreateEvent; @@ -152,7 +154,13 @@ private void invokeMethod(SimpleCommand command, Message message, Object[] param logger.warn("An error occurred while invoking method {}!", method.getName(), e); } if (reply != null) { - message.getChannel().sendMessage(String.valueOf(reply)); + if (reply instanceof EmbedBuilder) { + message.getChannel().sendMessage((EmbedBuilder) reply); + } else if (reply instanceof MessageBuilder) { + ((MessageBuilder) reply).send(message.getChannel()); + } else { + message.getChannel().sendMessage(String.valueOf(reply)); + } } } diff --git a/sdcf4j-jda3/src/main/java/de/btobastian/sdcf4j/handler/JDA3Handler.java b/sdcf4j-jda3/src/main/java/de/btobastian/sdcf4j/handler/JDA3Handler.java index 2ce3e0a..3913f1b 100644 --- a/sdcf4j-jda3/src/main/java/de/btobastian/sdcf4j/handler/JDA3Handler.java +++ b/sdcf4j-jda3/src/main/java/de/btobastian/sdcf4j/handler/JDA3Handler.java @@ -23,6 +23,7 @@ import de.btobastian.sdcf4j.Sdcf4jMessage; import net.dv8tion.jda.client.entities.Group; import net.dv8tion.jda.core.JDA; +import net.dv8tion.jda.core.MessageBuilder; import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.hooks.ListenerAdapter; @@ -32,7 +33,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; -import java.util.Collection; import java.util.regex.Matcher; /** @@ -153,7 +153,13 @@ private void invokeMethod(SimpleCommand command, MessageReceivedEvent event, Obj logger.warn("An error occurred while invoking method {}!", method.getName(), e); } if (reply != null) { - event.getChannel().sendMessage(String.valueOf(reply)).queue(); + if (reply instanceof MessageEmbed) { + event.getChannel().sendMessage((MessageEmbed) reply).queue(); + } else if (reply instanceof MessageBuilder) { + ((MessageBuilder) reply).sendTo(event.getChannel()).queue(); + } else { + event.getChannel().sendMessage(String.valueOf(reply)).queue(); + } } }