Skip to content

Commit b6d0ab9

Browse files
Merge pull request #54 from Zavarov/master
Fix UnsupportedOperationException when sending DataMessages
2 parents 829b5d2 + 84f903f commit b6d0ab9

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

src/main/java/club/minnced/discord/webhook/send/WebhookMessageBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,6 @@ public static WebhookMessageBuilder fromJDA(@NotNull net.dv8tion.jda.api.entitie
433433
WebhookMessageBuilder builder = new WebhookMessageBuilder();
434434
builder.setTTS(message.isTTS());
435435
builder.setContent(message.getContentRaw());
436-
builder.setEphemeral(message.isEphemeral());
437436
message.getEmbeds().forEach(embed -> builder.addEmbeds(WebhookEmbedBuilder.fromJDA(embed).build()));
438437

439438
if (message instanceof DataMessage) {
@@ -460,6 +459,7 @@ public static WebhookMessageBuilder fromJDA(@NotNull net.dv8tion.jda.api.entitie
460459
.collect(Collectors.toList()));
461460
allowedMentions.withParseEveryone(message.mentionsEveryone());
462461
builder.setAllowedMentions(allowedMentions);
462+
builder.setEphemeral(message.isEphemeral());
463463
}
464464
return builder;
465465
}

src/test/java/root/send/MessageTest.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
2222
import club.minnced.discord.webhook.send.WebhookMessage;
2323
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
24+
import net.dv8tion.jda.api.EmbedBuilder;
25+
import net.dv8tion.jda.api.MessageBuilder;
26+
import net.dv8tion.jda.api.entities.Message;
27+
import net.dv8tion.jda.api.entities.MessageEmbed;
28+
import net.dv8tion.jda.internal.entities.DataMessage;
29+
import net.dv8tion.jda.internal.entities.ReceivedMessage;
2430
import okhttp3.RequestBody;
2531
import org.json.JSONArray;
2632
import org.json.JSONObject;
@@ -38,6 +44,10 @@
3844
import java.util.List;
3945
import java.util.Map;
4046

47+
import static org.mockito.Mockito.CALLS_REAL_METHODS;
48+
import static org.powermock.api.mockito.PowerMockito.mock;
49+
import static org.powermock.api.mockito.PowerMockito.when;
50+
4151
public class MessageTest {
4252
private WebhookMessageBuilder builder;
4353

@@ -127,6 +137,55 @@ public void buildMessageWithFiles() throws IOException {
127137
Assert.assertEquals("dog.png", message.getAttachments()[1].getName());
128138
Assert.assertEquals("bird.png", message.getAttachments()[2].getName());
129139
}
140+
141+
@Test
142+
public void buildMessageWithDataMessage() {
143+
MessageEmbed jdaEmbed = new EmbedBuilder()
144+
.setTitle("myEmbed")
145+
.build();
146+
147+
Message jdaMessage = new MessageBuilder()
148+
.setTTS(true)
149+
.setContent("myContent")
150+
.setEmbeds(jdaEmbed)
151+
.build();
152+
153+
WebhookMessage webhookMessage = WebhookMessageBuilder.fromJDA(jdaMessage).build();
154+
List<WebhookEmbed> webhookEmbeds = webhookMessage.getEmbeds();
155+
156+
Assert.assertEquals(webhookEmbeds.size(), 1);
157+
158+
WebhookEmbed webhookEmbed = webhookEmbeds.get(0);
159+
160+
Assert.assertTrue(jdaMessage instanceof DataMessage);
161+
Assert.assertTrue(webhookMessage.isTTS());
162+
Assert.assertEquals(webhookMessage.getContent(), "myContent");
163+
Assert.assertEquals(webhookEmbed.getTitle().getText(), "myEmbed");
164+
}
165+
166+
@Test
167+
public void buildMessageWithReceivedMessage() {
168+
MessageEmbed jdaEmbed = new EmbedBuilder()
169+
.setTitle("myEmbed")
170+
.build();
171+
172+
Message jdaMessage = mock(ReceivedMessage.class, CALLS_REAL_METHODS);
173+
when(jdaMessage.isTTS()).thenReturn(true);
174+
when(jdaMessage.getContentRaw()).thenReturn("myContent");
175+
when(jdaMessage.getEmbeds()).thenReturn(Arrays.asList(jdaEmbed));
176+
177+
WebhookMessage webhookMessage = WebhookMessageBuilder.fromJDA(jdaMessage).build();
178+
List<WebhookEmbed> webhookEmbeds = webhookMessage.getEmbeds();
179+
180+
Assert.assertEquals(webhookEmbeds.size(), 1);
181+
182+
WebhookEmbed webhookEmbed = webhookEmbeds.get(0);
183+
184+
Assert.assertTrue(jdaMessage instanceof ReceivedMessage);
185+
Assert.assertTrue(webhookMessage.isTTS());
186+
Assert.assertEquals(webhookMessage.getContent(), "myContent");
187+
Assert.assertEquals(webhookEmbed.getTitle().getText(), "myEmbed");
188+
}
130189

131190
@Test
132191
public void factoryEmbeds() {

0 commit comments

Comments
 (0)