Skip to content

Commit

Permalink
Update dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
MinnDevelopment committed Aug 2, 2023
1 parent bbbd1e0 commit d5aeb3c
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 48 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,9 @@ WebhookClient.setDefaultErrorHandler((client, message, throwable) -> {

This library also supports sending webhook messages with integration from other libraries such as

- [JDA](/DV8FromTheWorld/JDA) (version 5.0.0-alpha.13) with [JDAWebhookClient](https://github.com/MinnDevelopment/discord-webhooks/blob/master/src/main/java/club/minnced/discord/webhook/external/JDAWebhookClient.java)
- [Discord4J](/Discord4J/Discord4J) (version 3.2.2) with [D4JWebhookClient](https://github.com/MinnDevelopment/discord-webhooks/blob/master/src/main/java/club/minnced/discord/webhook/external/D4JWebhookClient.java)
- [Javacord](/Javacord/Javacord) (version 3.4.0) with [JavacordWebhookClient](https://github.com/MinnDevelopment/discord-webhooks/blob/master/src/main/java/club/minnced/discord/webhook/external/JavacordWebhookClient.java)
- [JDA](/DV8FromTheWorld/JDA) (version 5.0.0-beta.12) with [JDAWebhookClient](https://github.com/MinnDevelopment/discord-webhooks/blob/master/src/main/java/club/minnced/discord/webhook/external/JDAWebhookClient.java)
- [Discord4J](/Discord4J/Discord4J) (version 3.2.5) with [D4JWebhookClient](https://github.com/MinnDevelopment/discord-webhooks/blob/master/src/main/java/club/minnced/discord/webhook/external/D4JWebhookClient.java)
- [Javacord](/Javacord/Javacord) (version 3.8.0) with [JavacordWebhookClient](https://github.com/MinnDevelopment/discord-webhooks/blob/master/src/main/java/club/minnced/discord/webhook/external/JavacordWebhookClient.java)

### Example JDA

Expand Down
15 changes: 9 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -46,22 +46,25 @@ repositories {
val versions = mapOf(
"slf4j" to "1.7.32",
"okhttp" to "4.10.0",
"json" to "20210307",
"jda" to "5.0.0-alpha.13",
"discord4j" to "3.2.2",
"javacord" to "3.4.0",
"json" to "20230618",
"jda" to "5.0.0-beta.12",
"discord4j" to "3.2.5",
"javacord" to "3.8.0",
"junit" to "4.13.2",
"mockito" to "3.12.4", // must be compatible with powermock
"powermock" to "2.0.9",
"logback" to "1.2.3",
"annotations" to "22.0.0"
"annotations" to "24.0.1",
"jsr" to "3.0.2"
)

dependencies {
api("org.slf4j:slf4j-api:${versions["slf4j"]}")
api("com.squareup.okhttp3:okhttp:${versions["okhttp"]}")
api("org.json:json:${versions["json"]}")
implementation("org.jetbrains:annotations:${versions["annotations"]}")

compileOnly("com.google.code.findbugs:jsr305:${versions["jsr"]}")
compileOnly("org.jetbrains:annotations:${versions["annotations"]}")

compileOnly("net.dv8tion:JDA:${versions["jda"]}")
compileOnly("com.discord4j:discord4j-core:${versions["discord4j"]}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,8 @@
import discord4j.discordjson.json.MessageEditRequest;
import discord4j.discordjson.possible.Possible;
import discord4j.rest.util.MultipartRequest;
import net.dv8tion.jda.api.entities.Mentions;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.internal.entities.DataMessage;
import net.dv8tion.jda.internal.entities.ReceivedMessage;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import org.javacord.api.entity.DiscordEntity;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -431,38 +427,40 @@ public WebhookMessage build() {
*/
@NotNull
public static WebhookMessageBuilder fromJDA(@NotNull net.dv8tion.jda.api.entities.Message message) {
return fromJDA(MessageCreateData.fromMessage(message));
}

/**
* Converts a JDA {@link Message} into a compatible WebhookMessageBuilder.
*
* @param message
* The message
*
* @throws NullPointerException
* If null is provided
*
* @return WebhookMessageBuilder with the converted data
*/
@NotNull
public static WebhookMessageBuilder fromJDA(@NotNull MessageCreateData message) {
WebhookMessageBuilder builder = new WebhookMessageBuilder();
builder.setTTS(message.isTTS());
builder.setContent(message.getContentRaw());
builder.setContent(message.getContent());
message.getEmbeds().forEach(embed -> builder.addEmbeds(WebhookEmbedBuilder.fromJDA(embed).build()));

if (message instanceof DataMessage) {
DataMessage data = (DataMessage) message;
AllowedMentions allowedMentions = AllowedMentions.none();
EnumSet<Message.MentionType> parse = data.getAllowedMentions();
allowedMentions.withUsers(data.getMentionedUsersWhitelist());
allowedMentions.withRoles(data.getMentionedRolesWhitelist());
if (parse != null) {
allowedMentions.withParseUsers(parse.contains(Message.MentionType.USER));
allowedMentions.withParseRoles(parse.contains(Message.MentionType.ROLE));
allowedMentions.withParseEveryone(parse.contains(Message.MentionType.EVERYONE) || parse.contains(Message.MentionType.HERE));
}
builder.setAllowedMentions(allowedMentions);
} else if (message instanceof ReceivedMessage) {
AllowedMentions allowedMentions = AllowedMentions.none();
Mentions mentions = message.getMentions();
allowedMentions.withRoles(
mentions.getRoles().stream()
.map(Role::getId)
.collect(Collectors.toList()));
allowedMentions.withUsers(
mentions.getUsers().stream()
.map(User::getId)
.collect(Collectors.toList()));
allowedMentions.withParseEveryone(mentions.mentionsEveryone());
builder.setAllowedMentions(allowedMentions);
builder.setEphemeral(message.isEphemeral());
}
EnumSet<Message.MentionType> allowedMentions = message.getAllowedMentions();
Set<String> mentionedUsers = message.getMentionedUsers();
Set<String> mentionedRoles = message.getMentionedRoles();
builder.setAllowedMentions(
AllowedMentions.none()
.withUsers(mentionedUsers)
.withRoles(mentionedRoles)
.withParseEveryone(allowedMentions.contains(Message.MentionType.EVERYONE))
.withParseRoles(allowedMentions.contains(Message.MentionType.ROLE))
.withParseUsers(allowedMentions.contains(Message.MentionType.USER))
);


return builder;
}

Expand Down
12 changes: 6 additions & 6 deletions src/test/java/root/send/MessageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@
import club.minnced.discord.webhook.send.WebhookMessage;
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.entities.Mentions;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.internal.entities.DataMessage;
import net.dv8tion.jda.api.entities.MessageType;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import net.dv8tion.jda.internal.entities.ReceivedMessage;
import okhttp3.RequestBody;
import org.json.JSONArray;
Expand All @@ -46,7 +47,6 @@
import java.util.Map;

import static org.mockito.Answers.RETURNS_DEFAULTS;
import static org.mockito.Mockito.CALLS_REAL_METHODS;
import static org.powermock.api.mockito.PowerMockito.*;

public class MessageTest {
Expand Down Expand Up @@ -145,7 +145,7 @@ public void buildMessageWithDataMessage() {
.setTitle("myEmbed")
.build();

Message jdaMessage = new MessageBuilder()
MessageCreateData jdaMessage = new MessageCreateBuilder()
.setTTS(true)
.setContent("myContent")
.setEmbeds(jdaEmbed)
Expand All @@ -158,7 +158,6 @@ public void buildMessageWithDataMessage() {

WebhookEmbed webhookEmbed = webhookEmbeds.get(0);

Assert.assertTrue(jdaMessage instanceof DataMessage);
Assert.assertTrue(webhookMessage.isTTS());
Assert.assertEquals(webhookMessage.getContent(), "myContent");
Assert.assertEquals(webhookEmbed.getTitle().getText(), "myEmbed");
Expand All @@ -170,12 +169,13 @@ public void buildMessageWithReceivedMessage() {
.setTitle("myEmbed")
.build();

Message jdaMessage = mock(ReceivedMessage.class, CALLS_REAL_METHODS);
Message jdaMessage = mock(ReceivedMessage.class);
Mentions mentions = mock(Mentions.class, RETURNS_DEFAULTS);
when(jdaMessage.isTTS()).thenReturn(true);
when(jdaMessage.getContentRaw()).thenReturn("myContent");
when(jdaMessage.getEmbeds()).thenReturn(Arrays.asList(jdaEmbed));
when(jdaMessage.getMentions()).thenReturn(mentions);
when(jdaMessage.getType()).thenReturn(MessageType.DEFAULT);

WebhookMessage webhookMessage = WebhookMessageBuilder.fromJDA(jdaMessage).build();
List<WebhookEmbed> webhookEmbeds = webhookMessage.getEmbeds();
Expand Down

0 comments on commit d5aeb3c

Please sign in to comment.