|
25 | 25 | import discord4j.discordjson.json.MessageEditRequest;
|
26 | 26 | import discord4j.discordjson.possible.Possible;
|
27 | 27 | import discord4j.rest.util.MultipartRequest;
|
28 |
| -import net.dv8tion.jda.api.entities.Mentions; |
29 | 28 | import net.dv8tion.jda.api.entities.Message;
|
30 |
| -import net.dv8tion.jda.api.entities.Role; |
31 |
| -import net.dv8tion.jda.api.entities.User; |
32 |
| -import net.dv8tion.jda.internal.entities.DataMessage; |
33 |
| -import net.dv8tion.jda.internal.entities.ReceivedMessage; |
| 29 | +import net.dv8tion.jda.api.utils.messages.MessageCreateData; |
34 | 30 | import org.javacord.api.entity.DiscordEntity;
|
35 | 31 | import org.jetbrains.annotations.NotNull;
|
36 | 32 | import org.jetbrains.annotations.Nullable;
|
@@ -431,38 +427,40 @@ public WebhookMessage build() {
|
431 | 427 | */
|
432 | 428 | @NotNull
|
433 | 429 | public static WebhookMessageBuilder fromJDA(@NotNull net.dv8tion.jda.api.entities.Message message) {
|
| 430 | + return fromJDA(MessageCreateData.fromMessage(message)); |
| 431 | + } |
| 432 | + |
| 433 | + /** |
| 434 | + * Converts a JDA {@link Message} into a compatible WebhookMessageBuilder. |
| 435 | + * |
| 436 | + * @param message |
| 437 | + * The message |
| 438 | + * |
| 439 | + * @throws NullPointerException |
| 440 | + * If null is provided |
| 441 | + * |
| 442 | + * @return WebhookMessageBuilder with the converted data |
| 443 | + */ |
| 444 | + @NotNull |
| 445 | + public static WebhookMessageBuilder fromJDA(@NotNull MessageCreateData message) { |
434 | 446 | WebhookMessageBuilder builder = new WebhookMessageBuilder();
|
435 | 447 | builder.setTTS(message.isTTS());
|
436 |
| - builder.setContent(message.getContentRaw()); |
| 448 | + builder.setContent(message.getContent()); |
437 | 449 | message.getEmbeds().forEach(embed -> builder.addEmbeds(WebhookEmbedBuilder.fromJDA(embed).build()));
|
438 | 450 |
|
439 |
| - if (message instanceof DataMessage) { |
440 |
| - DataMessage data = (DataMessage) message; |
441 |
| - AllowedMentions allowedMentions = AllowedMentions.none(); |
442 |
| - EnumSet<Message.MentionType> parse = data.getAllowedMentions(); |
443 |
| - allowedMentions.withUsers(data.getMentionedUsersWhitelist()); |
444 |
| - allowedMentions.withRoles(data.getMentionedRolesWhitelist()); |
445 |
| - if (parse != null) { |
446 |
| - allowedMentions.withParseUsers(parse.contains(Message.MentionType.USER)); |
447 |
| - allowedMentions.withParseRoles(parse.contains(Message.MentionType.ROLE)); |
448 |
| - allowedMentions.withParseEveryone(parse.contains(Message.MentionType.EVERYONE) || parse.contains(Message.MentionType.HERE)); |
449 |
| - } |
450 |
| - builder.setAllowedMentions(allowedMentions); |
451 |
| - } else if (message instanceof ReceivedMessage) { |
452 |
| - AllowedMentions allowedMentions = AllowedMentions.none(); |
453 |
| - Mentions mentions = message.getMentions(); |
454 |
| - allowedMentions.withRoles( |
455 |
| - mentions.getRoles().stream() |
456 |
| - .map(Role::getId) |
457 |
| - .collect(Collectors.toList())); |
458 |
| - allowedMentions.withUsers( |
459 |
| - mentions.getUsers().stream() |
460 |
| - .map(User::getId) |
461 |
| - .collect(Collectors.toList())); |
462 |
| - allowedMentions.withParseEveryone(mentions.mentionsEveryone()); |
463 |
| - builder.setAllowedMentions(allowedMentions); |
464 |
| - builder.setEphemeral(message.isEphemeral()); |
465 |
| - } |
| 451 | + EnumSet<Message.MentionType> allowedMentions = message.getAllowedMentions(); |
| 452 | + Set<String> mentionedUsers = message.getMentionedUsers(); |
| 453 | + Set<String> mentionedRoles = message.getMentionedRoles(); |
| 454 | + builder.setAllowedMentions( |
| 455 | + AllowedMentions.none() |
| 456 | + .withUsers(mentionedUsers) |
| 457 | + .withRoles(mentionedRoles) |
| 458 | + .withParseEveryone(allowedMentions.contains(Message.MentionType.EVERYONE)) |
| 459 | + .withParseRoles(allowedMentions.contains(Message.MentionType.ROLE)) |
| 460 | + .withParseUsers(allowedMentions.contains(Message.MentionType.USER)) |
| 461 | + ); |
| 462 | + |
| 463 | + |
466 | 464 | return builder;
|
467 | 465 | }
|
468 | 466 |
|
|
0 commit comments